Project

General

Profile

Actions

Bug #92473

open

TYPO3\CMS\Core\Http\JsonReponse dont allow JsonSerializable and others

Added by Daniel Kern over 3 years ago. Updated about 2 years ago.

Status:
New
Priority:
Should have
Assignee:
-
Category:
Miscellaneous
Target version:
-
Start date:
2020-10-02
Due date:
% Done:

0%

Estimated time:
TYPO3 Version:
10
PHP Version:
7.4
Tags:
Complexity:
medium
Is Regression:
Sprint Focus:
Remote Sprint

Description

Issue:
I use TYPO3\CMS\Core\Http\JsonReponse in Middlewares. The constructor allow $data to be mixed. Even the internal function allows $data to be of any type. But between __construct and jsonEncode is another function setPayload wich only allows $data to be type of array. This results in the fact, that we can only respond arrays as JSON. But at least classes implementing @JsonSerializablev should be able to be responded too. Also, why isn't it possible to return other types as JSON too?

Solution:
Remove the type annotation of setPayload. There would be no harm, because jsonEncode already checks for conversion errors. This should also not break anything.

Before:
public function setPayload(array $data = [], $encodingOptions = self::DEFAULT_JSON_FLAGS): JsonResponse

After:
public function setPayload($data = [], $encodingOptions = self::DEFAULT_JSON_FLAGS): JsonResponse

Actions

Also available in: Atom PDF