Alexander Steshenko created THRIFT-2285: -------------------------------------------
Summary: TJsonProtocol implementation for Java doesn't allow a slash (/) to be escaped (\/) Key: THRIFT-2285 URL: https://issues.apache.org/jira/browse/THRIFT-2285 Project: Thrift Issue Type: Bug Components: Java - Library, PHP - Library Reporter: Alexander Steshenko We have PHP frontend and Java backend. Thrift is used for interaction between the two, entities are serialized and deserialized using TJsonProtocol. Whenever a string in a thrift entity contains a slash "/", PHP's implementation, that uses {{json_encode}} under the hood, escapes it: "Translation eng/rus" => "Translation eng\/rus". So the payload may look like this: {noformat} {"1":{"str":"Translation rus\/eng"}} {noformat} (assuming that the entity only has this one string property) Java cannot handle this input and fails with: org.apache.thrift.protocol.TProtocolException: Expected control char Java does not allow a slash to be escaped. Thrift version is 0.9.1 Any advice on what to do for a temporary solution? Should we fix Java side or PHP side? As per json.org, a slash CAN be escaped. To me it looks more like Java is not standard compliant in this case. At the same time, however, I don't like the ambiguity of the standard allowing both unescaped and escaped slash. -- This message was sent by Atlassian JIRA (v6.1.4#6159)