JSONObject.toString: how NOT to escape slashes

I need to send a date in JSON. The date string should look like this:

"2013/5/15"

Instead , JSONObject.toString escapes it as follows:

"2013 /5 /15"

I understand that this is done to allow json strings inside scripts tags, as this question explains: JSON: why are forward slashes escaped?

But in my case I don't need it. In fact the server is returning an error. The server is not dealing with this and I can't fix the server, so I must fix it in the mobile client code.

I could do a String.replace after serializing it, but what if I actually wanted to include the " /" string in any other part of the JSON?

Is there a way to serialize a JSON object without escaping slashes? (If possible, without escaping anything)

Thanks in advance.


I finally opted for the quick and dirty trick of replacing the escaped slashes in the serialized string before sending it to the server. Luckily, JSONObject also escapes backslashes, so i must also unscape them. Now if I wanted to send " /" intentionally the escaped string would be "/" and the result of replacing is the original string as intended.


That behavior is hard-coded into JSONStringer.java, see method private void string(String value) , line 302+.

It should be possible to copy class JSONStringer and implement your own version of value(Object) (line 227+). Then implement your own version of JSONObject.toString() in a utility class and use your own JSONStringer instead of the original.

EDIT: Subclassing JSONStringer won't be easy because value() calls a private method beforeValue() that cannot be accessed.


jsonObjSend.toString().replace("\","")

Worked for me. A bit dirty trick but seems no other solution.

链接地址: http://www.djcxy.com/p/47926.html

上一篇: 如何在HTML文档中安全地嵌入JSON和</ script>?

下一篇: JSONObject.toString:如何不转义斜杠