Acess嵌套JSON Android

时间:2017-03-01 11:35:33

标签: android json

我想知道如何在android中访问此JSON的值:

{
    "dados": [{
        "Id": 3,
        "IdChamado": 3,
        "Chamado": "value",
        "Solicitante": "value",
        "Acao": "",
        "ItemDeCatalogo": "Mobile | Instalação",
        "InicioPrevisto": "06/01/2017 08:11:00",
        "TerminoPrevisto": "06/01/2017 08:22:00"
    }, {
        "Id": 4,
        "IdChamado": 4,
        "Chamado": "value",
        "Solicitante": "value",
        "Acao": "",
        "ItemDeCatalogo": "value",
        "InicioPrevisto": "06/01/2017 08:11:34",
        "TerminoPrevisto": "06/01/2017 08:11:34"
    }],
    "success": true,
    "erroAplicacao": false
}

我需要访问值“IdChamado”,“chamado”,“Solicitante”等。我已经看过嵌套数组的答案,但jsonObjects有一个实际名称,如this

PS:对不起,我忘记发布我的代码了:

 //Method called when the doInBack is complete
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        try {
            JSONObject jsonObject = new JSONObject(result);
            JSONArray jArray = jsonObject.getJSONArray("dados");
            Log.i("***2nd JSON ITSELF***", result);

            for (int i=0; i<jArray.length(); i++) {
                    JSONObject jsonPart = jArray.getJSONObject(i);

                    int id = jsonPart.getInt("id");
                    Log.i("***id***", String.valueOf(id));
                    String chamado = jsonPart.getString("Chamado");
                    Log.i("***Chamado***", chamado);
                    String solicitante = jsonPart.getString("solicitante");
                    Log.i("***Solicitante***", solicitante);
                    String itemDeCatalogo = jsonPart.getString("itemDeCatalogo");
                    Log.i("***Item de Catalogo***", itemDeCatalogo);
                }
        }catch(JSONException e) {
            e.printStackTrace();
        }//  END CATCH
    }// END POST EXECUTE

[求助]:非常感谢你们,你们是我喜欢编码的原因(不要害怕提出愚蠢的问题)。这一切都很好地与您发送的代码作为答案。我觉得它会更复杂。的xD

@Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        try {
            JSONObject jsonobject = new JSONObject(result);
            JSONArray jsonarray = jsonobject.getJSONArray("dados");

            for (int i = 0; i < jsonarray.length(); i++) {
                JSONObject jobject = jsonarray.getJSONObject(i);
                String idChamado = jobject.getString("IdChamado");
                String solicitante = jobject.getString("Solicitante");
                Log.i("**id**", idChamado);
                Log.i("**solicitante**", solicitante);
            }
        }catch(JSONException e) {
            e.printStackTrace();
        }//  END CATCH
    }// END POST EXECUTE

5 个答案:

答案 0 :(得分:0)

JSONObject jsonobject = new JSONObject("your JSON String here");
JSONArray jsonarray = jsonobject.getJSONArray("dados");

for (int i = 0; i < jsonarray.length(); i++) {
    JSONObject jsonobject = jsonarray.getJSONObject(i);
    String IdChamado = jsonobject.getString("IdChamado");    
     String Solicitante = jsonobject.getString("Solicitante"); 
}

请试试这个

答案 1 :(得分:0)

试试这个:

 try{
    JSONObject json = new JSONObject(jsonString);
    JSONArray jsonArray = json.getJSONArray("dados");
    for(int i=0;i<jsonArray.length();i++){
         JSONObject object = jsonArray.getJSONObject(i);
         String IdChamado = object.getString("IdChamado");
         String Chamado = object.getString("Chamado");
         //rest of the strings..
        }
     }
     catch (JSONException e){
           e.printStackTrace();
    }

答案 2 :(得分:0)

试试这个

    for (int i=0; i<jArray.length(); i++) {
                        JSONObject jsonobject = jArray.getJSONObject(i);
                        int IdChamado = jsonobject.getInt("IdChamado");  //idchamado here  
                        String chamado = jsonobject.getString("Chamado");
                        String solicitante = jsonobject.getString("Solicitante");

                    }

答案 3 :(得分:0)

选择任何数据时使用正确的键

@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONObject jsonObject = new JSONObject(result);
JSONArray jArray = jsonObject.getJSONArray("dados");
Log.i("***2nd JSON ITSELF***", result);
for (int i=0; i<jArray.length(); i++) {
JSONObject jsonObject = new JSONObject(result);
JSONArray jArray = jsonObject.optJSONArray("dados");
Log.i("***2nd JSON ITSELF***", result);
for (int i=0; i<jArray.length(); i++) {
JSONObject jsonPart = jArray.optJSONObject(i);
int id = jsonPart.optInt("Id");
Log.i("***id***", String.valueOf(id));
String chamado = jsonPart.optString("Chamado");
Log.i("***Chamado***", chamado);
String solicitante = jsonPart.optString("Solicitante");
Log.i("***Solicitante***", solicitante);
String itemDeCatalogo = jsonPart.optString("ItemDeCatalogo");
Log.i("***Item de Catalogo***", itemDeCatalogo);
}
}catch(JSONException e) {
e.printStackTrace();
}//  END CATCH
}

答案 4 :(得分:0)

我写了一个用于在Android中解析和生成JSON的库 http://github.com/amirdew/JSON

您的样本:

JSON jsonData = new JSON(jsonString);

//access IdChamado of first item:
int IdChamado = jsonData.key("dados").index(0).key("IdChamado").intValue();


//in loop:

JSON dadosList = jsonData.key("dados");

for(int i=0; i<dadosList.count(); i++){
   int IdChamado = dadosList.index(i).key("IdChamado").intValue();
   String Chamado = dadosList.index(i).key("Chamado").stringValue();
}