Массив перемещения в JSONArray

1

Я создаю приложение для 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

Спасибо.

  • 2
    Вызов respJSON.getJSONArray("factoresDeVenta") не работает?
  • 0
    Но мне нужны значения внутри, и я пишу "String [] Factores = respJSON.getJSONArray (" factoresDeVenta ");" и несовместимые типы
Показать ещё 1 комментарий
Теги:

3 ответа

0
Лучший ответ

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
 }
0
JSONArray jArray = respJSON.getJSONArray("factoresDeVenta");

Он предоставит вам массив данных, хранящихся в factoresDeVenta, который вы можете снова пересечь, чтобы получить отдельные элементы из этого массива.

  • 0
    внутри элементы меняются, поэтому я хочу выбрать автоматический режим, а не "getString ()", я могу?
  • 0
    jArray.get(n) даст вам nth элемент jArray .
Показать ещё 1 комментарий
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()]);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню