0

我想解析一个所有 Json 数组都具有相同名称的 Json 文件:

[
   {
      "mobileMachine":{
         "condition":"GOOD",
         "document":"a",
         "idNr":"ce4f5a276a55023efced9c6a4b02bf4fcff04c06b4338467c8679770bff32313f7f372b5ec2f7527dad0de47d0fb117e"
      }
   },
   {
      "mobileMachine":{
         "condition":"GOOD",
         "document":"b",
         "idNr":"ce4f5a276a8e023efced9c6a4b02bf4fcff04c06b4338467c8679770bff32313f7f372b5ec2f7527dad0de47d0fb217e"
      }
   },
   ...
]

所以这是我的小代码:

JSONArray json = new JSONArray(urlwhereIGetTheJson);
for (int count = 0; count < json.length(); count++) {
    JSONObject obj = json.getJSONObject(count);

    String condition = obj.getString("condition");
    String document = obj.getString("document");
    String idNr = obj.getString("idNr");

    db.addMachine(new MachineAdapter(condition, document, idNr));
}

我希望你能告诉我如何正确解析 JSON 文件。谢谢

我无法编辑 JSON 文件。(该文件包括 300 多台移动机器。我已经缩短了这个)。

(对不起我的英语不好)

4

2 回答 2

0

将其更改为

JSONArray json = new JSONArray(jsonString);
for (int count = 0; count < json.length(); count++) {
   JSONObject obj = json.getJSONObject(count).getJSONObject("mobileMachine");


   String condition = obj.getString("condition");
   String document = obj.getString("document");
   String idNr = obj.getString("idNr");

   db.addMachine(new MachineAdapter(condition, document, idNr));
}

你忘记了“mobileMachine”。

于 2013-10-28T13:11:30.137 回答
0

编辑:您new JSONArray()错误地使用了构造函数。看看文档。您不能直接在那里传递 url。您必须先获取它,然后将 json 传递给构造函数。

以下代码可以完成您想做的事情:

JSONArray jsonArray = new JSONArray(json);
int numMachines = jsonArray.length();

for(int i=0; i<numMachines; i++){
    JSONObject obj = jsonArray.getJSONObject(i);

    JSONObject machine = obj.getJSONObject("mobileMachine");
    String condition = machine.getString("condition");
    String document = machine.getString("document");
    String idNr = machine.getString("idNr");

    db.addMachine(new MachineAdapter(condition, document, idNr));
}

您忘记获取“mobileMachine”json 对象,并尝试直接访问 condition/document/idNr。

如果您可以控制 XML,则可以通过删除“mobileMachine”节点来使其更小:

[
   {
       "condition":"GOOD",
       "document":"a",
       "idNr":"ce4f5a276a55023efced9c6a4b02bf4fcff04c06b4338467c8679770bff32313f7f372b5ec2f7527dad0de47d0fb117e"
   },
   {
       "condition":"GOOD",
       "document":"b",
       "idNr":"ce4f5a276a8e023efced9c6a4b02bf4fcff04c06b4338467c8679770bff32313f7f372b5ec2f7527dad0de47d0fb217e"
   },
   ...
]
于 2013-10-28T13:12:11.577 回答