2

誰かが私を助けてくれることを願っています。次のjsonファイルを解析しようとしています:

{"seminar":[
    {"categoryid": "1","cpe": "13","inventory":["Discussion","Value x","Value y"
    ],"teachers": [
    {
        "titel": "Dipl.-Ing.",
        "company": "XY",
        "name": "Test",
        "id": "3",
    }
    ],

},...

教師データの解析に迷っています...

...
private static final String TAG_teachers = "teachers";
private static final String TAG_TITLE = "title";

for(int i = 0; i < seminar.length(); i++){
    JSONObject c = seminar.getJSONObject(i);
    ...
    teachers = c.getJSONArray(TAG_DOZENTEN);
    for(int z = 0; z < teachers.length(); z++){                 
    JSONObject d = teachers.getJSONObject(z);
    String title  = d.getString(TAG_TITLE);
    Log.d("JSONParsingActivity", title);

System.err(1010): org.json.JSONException: Value null at teacher of type org.json.JSONObject$1 cannot be convert to JSONArray というエラーが表示されます。

私は何を間違えましたか?JSON ドキュメントからわかるように、教師は JSON 配列であり、オブジェクトではありません。誰かが私を助けることができますか?

4

2 に答える 2

3

教師には余分な(末尾の)コンマがあります(「3」の後)。JSON では許可されていません。それを削除して、それが役立つかどうかを確認してください。

于 2012-11-26T22:14:54.023 に答える
2

JSON が実際に次の形式の場合:

{ ... }, { ... }, { ... }, ...

これは無効な JSON です

ルート エンクロージャは、単一のオブジェクト ( {}) またはアレイ ( )のいずれかである必要があります[]

オブジェクトの配列を送信することが目的の場合は、単に全体を角括弧で囲んで配列にし、そこから JSONArray オブジェクトを作成します。

だからこうあるべき

[ { ... }, { ... }, { ... }, ... ]

また、余分なコンマや閉じていない括弧などがないことも確認する必要があります。JSONLintまたは他の同様の JSON 形式チェッカーを使用して、構文の問題を見つける時間を節約してください。

于 2012-11-26T22:15:41.330 に答える