0

我从 API 中得到一个名称列表等。

如果 JSONArray 的对象中有空格,我的应用程序会崩溃并出现异常

这是来自 HashMap 的数组:

{id="a5b140c9-9987-4e6d-a883-a18c00726883", children=[{id=fe103303-fd5e-4cd6-81a0-a18c00733737, children=[], parentid=a5b140c9-9987-4e6d-a883-a18c00726883, name=Contains Spaces}], parentid=, name=Kiosk}

然后我遍历它的孩子:

JSONArray child = new JSONArray(json.get("children").toString());                               
for ( int i=0; i<child.length();i++ ) {

}

由于此处的空间,这部分给出了一个例外:

JSONArray child = new JSONArray(json.get("children").toString())
name=Contains Spaces

d

03-26 10:31:56.409: W/System.err(4793): org.json.JSONException: End of input at character 0 of 
03-26 10:31:56.417: W/System.err(4793):     at org.json.JSONTokener.syntaxError(JSONTokener.java:450)
03-26 10:31:56.417: W/System.err(4793):     at org.json.JSONTokener.nextValue(JSONTokener.java:97)
03-26 10:31:56.417: W/System.err(4793):     at org.json.JSONObject.<init>(JSONObject.java:154)
03-26 10:31:56.417: W/System.err(4793):     at org.json.JSONObject.<init>(JSONObject.java:171)
03-26 10:31:56.417: W/System.err(4793):     at com.example.tvrplayer.ChannelsDialogPreference$1$1.run(ChannelsDialogPreference.java:158)
4

1 回答 1

1

消息中的第一段代码是 JSON 吗?我记得所有键和字符串值都必须包含在“”中。和 : 而不是 = 应该是这样的:

{"id":"a5b140c9-9987-4e6d-a883-a18c00726883", "children":[{"id":"fe103303-fd5e-4cd6-81a0-a18c00733737", "children":[], "parentid":"a5b140c9-9987-4e6d-a883-a18c00726883", "name":"Contains Spaces"}], "parentid":"", "name":"Kiosk"}

请参阅:JSON 语法

如果是 javascript,您仍然应该使用 "" 编写字符串值(全部,而不仅仅是带有空格的那些)。

于 2013-03-26T08:53:10.613 回答