在Android中使用Volley获取JSONArray

时间:2016-07-22 11:08:06

标签: android json android-volley

我正在尝试使用Android获取此JSONArray,但我无法获得所有项目的codigonombre

我离开了我想要的JSON

  

{ “categorias”:   {“cfcd208495d565ef66e7dff9f98764da”:{“orden”:0,“codigo”:“001”,“nombre”:“TUBO Y ACCESORIO DE COBRE,LATON”},   “c4ca4238a0b923820dcc509a6f75849b”:{“orden”:1,“codigo”:“002”,“nombre”:“TUBO Y ACCESORIO PVC PRESION”},   “c81e728d9d4c2f636f067f89cc14862c”:{ “奥登”:2 “codigo”: “003”, “农布雷”: “AISLAMIENTO”},   “eccbc87e4b5ce2fe28308fd9f2a7baf3”:{“orden”:3,“codigo”:“004”,“nombre”:“MONTAJE DE AGUA SANITARIA”},   “a87ff679a2f3e71d9181a67b7542122c”:{“orden”:4,“codigo”:“005”,“nombre”:“ABRAZADERAS FONTANERIA”},“e4da3b7fbbce2345d7772b0674a318d5”:{“orden”:5,“codigo”:“006”,“nombre “:”FLEXOS DE ACERO“},   “1679091c5a880faf6fb5e6087eb1b2dc”:{“orden”:6,“codigo”:“007”,“nombre”:“ACCESORIOS DE SANEAMIENTO”},       ...       ...       ...

这是我在Android上的代码,我总是得到null响应:

 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, showUrl, null,
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        System.out.println("Respuesta:"+ response.toString());
                        try {
                            listaCategorias.clear();
                            int array=0;

                            JSONArray categorias = response.getJSONArray("categorias");

                            for (int i = 0; i < categorias.length(); i++) {

                                JSONObject objet = categorias.getJSONObject(i);

                                String titulo = objet.getString("nombre");

                                if (isIntegerParseInt(String.valueOf(titulo.charAt(0))))
                                    listaCategorias.add(titulo);

                            }
                            array++;
                            onCallBack.onSuccess(listaCategorias);



                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                    }
                }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                System.out.println("ErrorRespuesta: "+error.getMessage());

            }
        });
        requestQueue.add(jsonObjectRequest);

3 个答案:

答案 0 :(得分:3)

它不是JSON ARRAY 它的JSON OBJECT
供你参考我发布样本json数组

"three_day_forecast": [
    { 
        "conditions": "Partly cloudy",
        "day" : "Monday",
        "temperature": 20 
    },
    { 
        "conditions": "Showers",
        "day" : "Tuesday",
        "temperature": 22 
    },
    { 
        "conditions": "Sunny",
        "day" : "Wednesday",
        "temperature": 28 
    }
]

this引用使用了数据。

答案 1 :(得分:0)

它不是一个数组,而是一个JSONObject,你需要修改你的JSON以获得一个带有[]而不是{}的数组。或者你通过getJSONObject得到它。

答案 2 :(得分:0)

参考JSON字符串,您发布的categorias不是 JSONArray 。它是一个对象,JSON字符串仍然无效。

在字符串的顶部,您将密钥作为类别,现在如果要将其用作数组,则必须将类别的值设置为数组在JSON字符串中的 [] 中指定。

如果你在带索引的循环中使用它,那么另一件事就是尽量避免使用 JSON数组的随机密钥。因此,您的 JSON字符串可能如下所示,以支持您的Android代码。

{
"categories": [
     { object 1... },
     { object 2... },
     and so on...
]
}

您可以在此处看到 JSON 的类型:
http://json-parser.com/53b37f69