【发布时间】:2015-12-09 15:30:48
【问题描述】:
我正在使用JSON.org java library 进行修改。
由于\n 字符,我目前遇到错误:
try{
String s = "{\"property:\":\"line1\n,line2\"}";
JSONObject o = new JSONObject(s);
}catch(Exception e){
e.printStackTrace(System.err);
}
结果:
org.json.JSONException: Unterminated string at 20 [character 0 line 2]
at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
at org.json.JSONTokener.nextString(JSONTokener.java:261)
at org.json.JSONTokener.nextValue(JSONTokener.java:361)
at org.json.JSONObject.<init>(JSONObject.java:218)
at org.json.JSONObject.<init>(JSONObject.java:325)
快速搜索后,我找到了this answer 这指向我的字符串必须像这样转义:
String s = "{\"property:\":\"line1\\n,line2\"}";
我将不再看到异常,可以用'\n' 替换"\n" 的字符串,但我只是想知道:
是否推荐在 java 中处理 JSON 字符串中的新行?
【问题讨论】:
-
这和 JavaScript 有什么关系?
-
大部分是 JSON 部分。我没有在我的问题中提到我通常会从 Javascript (websocket) 接收这个字符串,我的主要 java 代码将是一个基本的 Websocket 服务器。我不想让事情变得过于复杂,因为这主要围绕 java 中的 JSON 解析展开
-
请注意,
obj.get("property:")将返回正确解码的String值,即。 JSON 中的\n变成换行符。
标签: javascript java json escaping