Ensure toJson and toResponse call jsonSerialize #1012
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
I noticed that the
toJson()
andtoResponse()
methods do not use thejsonSerialize()
method.This can be problematic in certain use cases. For example, you might override
jsonSerialize()
to transform an empty array into an object to ensure consistent data structures on the frontend.With this PR, the package will be more aligned with Laravel's behavior, which respects the
jsonSerialize()
method in similar scenarios.Example
As shown,
json_encode($data)
and$data->toJson()
currently produce inconsistent results. This PR fixes that.Implementation Note
To make
toResponse()
respectjsonSerialize()
, I introduced a new method:jsonSerializeWithTransformationContext()
. This method may also be useful in other parts of the package, such as: