0

誰かが私を助けてくれることを願っています。次の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_TEACHERS);
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:タイプorg.json.JSONObject$1の教師の値nullはJSONArrayに変換できません。

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

4

3 に答える 3

1

間違ったタグを使用しているようです。教師 = c.getJSONArray(TAG_DOZENTEN);

TAG_DOZENTEN ではなく TAG_teachers であるべきではありませんか?

于 2012-12-02T19:03:06.163 に答える
1

これはあなたの特定の問題に対する答えではないかもしれませんが、とにかく. これを手動で解析する必要がありますか? たとえば、ジャクソンのようなマッパーを使用しないでください。

http://jackson.codehaus.org/0.9.9/javadoc/org/codehaus/jackson/map/ObjectMapper.html

よりスムーズに!

于 2012-12-02T19:03:36.303 に答える
0

指定された JSON 文字列を次のように解析できます。

JSONObject jObject  = new JSONObject("YOUR_JSON_STRING");

JSONArray jArrseminar = jObj.getJSONArray("seminar");
for(int i = 0; i < jArrseminar.length(); i++){
    JSONObject jobject = jArrseminar.getJSONObject(i);

    String strcategoryid=jobject.getString("categoryid");
    String strcpe=jobject.getString("cpe");

    JSONArray jArrinventory = jobject.getJSONArray("inventory");
    for(int j = 0; j < jArrinventory.length(); j++){

        // access all inventory value here
    }


    JSONArray jArrteachers = jobject.getJSONArray("teachers");
    for(int j = 0; j < jArrteachers.length(); j++){
        JSONObject jobjectteachers = jArrteachers.getJSONObject(i);

        // access all teachers value here
    String strtitel=jobjectteachers.getString("titel");
    String strcompany=jobjectteachers.getString("company");
    String strname=jobjectteachers.getString("name");
    String strid=jobjectteachers.getString("id");
    }
}
于 2012-12-02T19:12:31.920 に答える