Я создаю приложение для Android, которое делает вызов веб-службы, которая возвращает json с ARRAY в качестве параметра, я могу пройти через все настройки и легко сохранить их.
Проблема заключается в том, когда я получаю массив, который я возвращал в объекте 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 easy", НО я не знаю, как я могу сэкономить "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
Спасибо.
factoresDeVenta
является JSONArray внутри JSONObject, поэтому вам нужно будет использовать 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
}
JSONArray jArray = respJSON.getJSONArray("factoresDeVenta");
Он предоставит вам массив данных, хранящихся в factoresDeVenta
, который вы можете снова пересечь, чтобы получить отдельные элементы из этого массива.
jArray.get(n)
даст вам nth
элемент jArray
.
Вы можете сохранить в 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()]);
respJSON.getJSONArray("factoresDeVenta")
не работает?