Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-2285

TJsonProtocol implementation for Java doesn't allow a slash (/) to be escaped (\/)

    XMLWordPrintableJSON

    Details

      Description

      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:

      {"1":{"str":"Translation  rus\/eng"}}
      

      (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.

        Attachments

          Activity

            People

            • Assignee:
              jensg Jens Geyer
              Reporter:
              lcf Alexander Steshenko
            • Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: