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.
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:
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: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.
If you're unsure about any of these, don't hesitate to ask. We're here to help!