Как получить объект JSON с определенным значением в Android с помощью GSON

#java #android #json #gson #android-json

#java #Android #json #gson #android-json

Вопрос:

Я хотел бы проанализировать данные из JSON, который имеет строковый тип. Мой ответ JSON выглядит так

 [{"order":-1,"number":"5"},{"order":0,"number":"7"},{"order":1,"number":"3"}]
  

Я попытался использовать следующий метод:

 JSONArray json = new JSONArray("My JSON String");

        for (int i = 0; i < json.length(); i  )
        {
            JSONObject json_staticon = json.getJSONObject(i);

            if(json_staticon.getInt("order") == 0) {
                return json_staticon.getInt("number");
            }
        }
  

Но я хочу использовать библиотеку Google GSON для анализа моих ответов JSON, поэтому…
какой лучший способ получить number значение в объекте с order = 0 помощью GSON?

Спасибо!

Ответ №1:

Использование Gson

     Gson gson = new Gson();
    Type collectionType = new TypeToken<List<Orders>>(){}.getType();
    List<Orders> details = gson.fromJson(json, collectionType); // json is your json
    for (int i = 0; i <details.size(); i  ) {
        Log.i("Order is ","" details.get(i).order); // Log the order
        Log.i("Order Number is ","" details.get(i).number); 
    }
  

Order.java

   public class Orders {

   String order,number;
  }
  

Зарегистрированные значения

 06-15 04:22:31.282: I/Order is(2464): -1
06-15 04:22:31.282: I/Order Number is(2464): 5
06-15 04:22:31.282: I/Order is(2464): 0
06-15 04:22:31.282: I/Order Number is(2464): 7
06-15 04:22:31.282: I/Order is(2464): 1
06-15 04:22:31.282: I/Order Number is(2464): 3
  

Также вместо for (int i = 0; i <details.size(); i ) { вы можете использовать расширенный цикл for for (Orders orders: details) {