Let `json-stream` formatter escape quotes in strings
Description
I found that the json-stream formatter currently does not escape any quotation marks in strings so that the output won't be well-formed JSON.
For example, this results in invalid JSON being produced:
class Foo {
function __construct(public string $foo) {}
}
$serde = new SerdeCommon();
$result = $serde->serialize(new Foo('test " '), format: 'json-stream');
The result will be {"foo":"test " "}.
I am fixing this by overriding the serializeString method to escape quotes.
Motivation and context
I think the issue is self-explanatory.
How has this been tested?
I updated one test to include a quotation mark which caused the test to no longer pass.
I then made the test pass again by supplying an implementation for serializeString that escapes quotes.
Screenshots (if appropriate)
Types of changes
What types of changes does your code introduce? Put an x in all the boxes that apply:
- [x] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
Checklist:
Go over all the following points, and put an x in all the boxes that apply.
Please, please, please, don't send your pull request until all of the boxes are ticked. Once your pull request is created, it will trigger a build on our continuous integration server to make sure your tests and code style pass.
- [x] I have read the CONTRIBUTING document.
- [x] My pull request addresses exactly one patch/feature.
- [x] I have created a branch for this patch/feature.
- [x] Each individual commit in the pull request is meaningful.
- [x] I have added tests to cover my changes.
- [x] If my change requires a change to the documentation, I have updated it accordingly.
If you're unsure about any of these, don't hesitate to ask. We're here to help!
@Crell Would you mind running the workflow once again?
@photz Still working on this?