有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用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响应,所以。。。 有什么更好的方法可以使用GSON通过order = 0获得对象中的number

谢谢


共 (1) 个答案

  1. # 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); 
        }
    

    秩序。爪哇

      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循环for (Orders orders: details) {来代替for (int i = 0; i <details.size(); i++) {