Crell / Serde

Robust Serde (serialization/deserialization) library for PHP 8.
Other
296 stars 14 forks source link

Let `json-stream` formatter escape quotes in strings #59

Closed photz closed 3 months ago

photz commented 4 months ago

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:

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!

photz commented 4 months ago

@Crell Would you mind running the workflow once again?

Crell commented 3 months ago

@photz Still working on this?