我从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)

最佳答案

消息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 Syntax

如果是javascript,您仍应使用“”写字符串值(全部,而不仅仅是带有空格的字符串值)。

10-05 17:52