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 に答える