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: org.json.JSONObject$1 类型的教师的 Value null 无法转换为 JSONArray。

我做错了什么?正如我从 JSON 文档中了解到的那样,教师是 JSON 数组而不是对象。有人可以帮助我吗?

4

2 回答 2

3

教师中有一个额外的(尾随)逗号(在“3”之后)。JSON 中不允许。删除它,看看是否有帮助。

于 2012-11-26T22:14:54.023 回答
2

如果您的 JSON 确实是以下形式:

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

这是无效的 JSON

根外壳必须是单个对象 (in {}) 或数组 (in [])。

如果您的意图是发送一个对象数组,那么只需用方括号将整个东西包裹起来,使其成为一个数组并从中创建一个 JSONArray 对象。

所以应该是这样的

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

您还需要确保没有多余的逗号、未闭合的括号等。使用JSONLint或其他类似的 JSON 格式检查器可以节省一些时间来查找语法问题。

于 2012-11-26T22:15:41.330 回答