遍历数组IN JSONArray

时间:2013-06-06 10:39:37

标签: android json

我正在为Android制作一个应用程序,它调用一个以ARRAY作为参数返回json的web服务,我可以通过所有设置并轻松保存它们。

问题是当我得到我在JSON对象中返回的数组时。

JSON示例:

[{"codigoArticulo":"0001","nombreArticulo":"CHULETAS DE CORDERO","factorVentasDefecto":"KG","precio":21.95,"factoresDeVenta":["KG","UN"]},{"codigoArticulo":"0007","nombreArticulo":"FALDETA DE CORDERO","factorVentasDefecto":"KG","precio":11.95,"factoresDeVenta":["KG","FL"]}]

我可以保存“codigoArticulo”,“nombreArticulo”,“factorVentasDefecto”和“precio轻松,但我不知道如何保存”factoresDeVenta“。

我有这段代码:

JSONArray resparray = new JSONArray(JSONdevuelto);

        for (int i = 0; i < resparray.length(); i++) {
            JSONObject respJSON = resparray.getJSONObject(i);

            int IDArticulo = respJSON.getInt("codigoArticulo");
            String NombreArticulo =  respJSON.getString("nombreArticulo");
            String FactordeVenta =  respJSON.getString("factorVentasDefecto");
            int PrecioArticulo = respJSON.getInt("precio");
}

如何在一个数组中保存“factoresDeVenta”上的变量?

我试试

String[] Factores = respJSON.getJSONArray("factoresDeVenta");

但没有用,因为它们是不兼容的类型。

我需要数组以后制作一个Spinner

谢谢。

3 个答案:

答案 0 :(得分:1)

factoresDeVenta是JSONObject中的JSONArray,因此您需要使用getJSONArrayoptJSONArray并使用循环从JSONArray获取值:

 JSONArray jArray = respJSON.optJSONArray("factoresDeVenta");
 for (int i = 0; i < jArray.length(); i++) {
   String str_value=jArray.optString(i);  //<< jget value from jArray
 }

答案 1 :(得分:0)

JSONArray jArray = respJSON.getJSONArray("factoresDeVenta");

它将为您提供存储在factoresDeVenta中的数据数组,您可以再次遍历该数据以从该数组中获取单个元素。

答案 2 :(得分:0)

您可以存储在ArrayList<String>

ArrayList<String> arrStr = new ArrayList<String>();

JSONArray jArray = respJSON.optJSONArray("factoresDeVenta");

for (int i = 0; i < jArray.length(); i++) {
     arrStr.add(jArray.getString(i));    
}

然后你可以将arraylist转换为字符串数组

String[] Factores = arrStr.toArray(new String[arrStr.size()]);