Json and Java. From String to JSONObject: issues
我正在使用库 org.json.
我有一个这样的字符串(引号不能出现在 field_n 中)
1
|
{field1=value1, field2=value2} (say it `val`)
|
这个字符串是从 Hashtable<String, Object>.
获得的
我从该字符串创建一个 JSONObject,获得:
1
|
{“field1”:“value1”,“field2”:“value2”}
|
当值中出现 value_n 引号(或换行符和回车符)时,就会出现问题。
我尝试过以这种方式转义字符串:
1
2 3 4 5 6 7 8 |
value = value.replace(“\”,”\\\\\“);
value = value.replace(““”,“\\\”“); value = value.replace(“\ “,“\\\ “); value = value.replace(“\ “,“\\\ “); |
但是当我尝试使用以下方法创建 JSONObject 时,我总是获得 org.json.JSONException: Expected a ‘,’ or ‘}’ at … [character … line 1]:
1
|
JSONObject json = new JSONObject(val);
|
为了从地图创建 JSON,使用:
1
|
new JSONObject(myMap);
|
另一个相关问题:
1
|
quotedStr = JSONObject.quote(val.trim());
|
将 qoute 所有需要的值,如它所说:
Produce a string in double quotes with backslash sequences in all the right places
- 我得到以下异常 org.json.JSONException: A JSONObject text must begin with ‘{‘ at 1 [character 2 line 1]。
- @baraky – 这行不通。它只会用引号括起整个 JSON 字符串,而不是单个字段和值。
- 看看它是否有帮助:stackoverflow.com/questions/4773663/…
-
@baraky:没什么。引发异常 org.json.JSONException: Expected a ‘,’ or ‘}’ at … [character … line 1]。字符串被转义 ({field1=dfds \”fdsfs\” fdfsd, field2=dsad\
\
fgfgfd}),但 JSONObject 构造在第一个 `\\\\\\\\` 处失败。 - 也许您可以在 JSON 中的每个对象上使用 JSONObject.quote()(您从地图中获得的内容),然后添加 “{” 和
- 您可以查看stackoverflow.com/questions/512692/…
- 你试过 JSONObject(myMap) 吗?
来源:https://www.codenong.com/15068645/