You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@thrift.apache.org by "Jens Geyer (Jira)" <ji...@apache.org> on 2021/10/28 23:01:00 UTC

[jira] [Comment Edited] (THRIFT-5474) TSimpleJsonProtocol serialization on string with inner quotes does not produce valid JSON.

    [ https://issues.apache.org/jira/browse/THRIFT-5474?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17435708#comment-17435708 ] 

Jens Geyer edited comment on THRIFT-5474 at 10/28/21, 11:00 PM:
----------------------------------------------------------------

Questions:
 * What is {{TNotSoSimpleJSONProtocol}}?
 * This will result in JSON that cannot be deserialized because ... can you show the JSON?


was (Author: jensg):
Questions:
* What is {{TNotSoSimpleJSONProtocol}}?
* This will result in JSON that cannot be deserialized because ... can you show it?

> TSimpleJsonProtocol serialization on string with inner quotes does not produce valid JSON.
> ------------------------------------------------------------------------------------------
>
>                 Key: THRIFT-5474
>                 URL: https://issues.apache.org/jira/browse/THRIFT-5474
>             Project: Thrift
>          Issue Type: Bug
>          Components: Java - Library
>            Reporter: Grant Sherrick
>            Priority: Minor
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> There is an issue in the generation of JSON from the TSimpleJSONProtocol, where if there are quotes inside of a string, then those quotes will not be serialized correctly. These quotes need one more layer of escaping to produce valid JSON.
>  
> For instance, if you have the Thrift structure defined by:
>  
> {code:java}
> struct MyThriftStruct {
>     1: required string my_string
> }
> {code}
>  
> And, I then define an object of that type in Java:
> {code:java}
> MyThriftStruct t = new MyThriftStruct();
> t.my_string = "I said: \"this is a fairly nice string.\""{code}
>  
> And, if I then serialize this using the TSimpleJsonProtocol in this manner:
> {code:java}
> TSerializer thriftJsonSer = new TSerializer(new TNotSoSimpleJSONProtocol.Factory());
> String myThriftStructJsonString = return thriftJsonSer.toString(t);
> {code}
>  
> This will result in JSON that cannot be deserialized because the quotes inside of the string were not escaped properly. 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)