我正在为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
谢谢。
答案 0 :(得分:1)
factoresDeVenta
是JSONObject中的JSONArray,因此您需要使用getJSONArray
或optJSONArray
并使用循环从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()]);