如何解析Android中具有相同名称的多个Json Arrays

时间:2013-10-28 12:49:35

标签: arrays json

我想解析一个Json文件,其中所有Json Arrays具有相同的名称:

[
   {
      "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多个移动设备。我缩短了这个。)

(抱歉我的英文)

2 个答案:

答案 0 :(得分: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”。

答案 1 :(得分:0)

修改:您错误地使用了new JSONArray()构造函数。看看documentation。你不能直接在那里传递网址。您必须先获取它,然后将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"
   },
   ...
]