【问题标题】:How to create a pojoclass having dynamic key如何创建具有动态密钥的 pojoclass
【发布时间】:2015-11-17 06:59:52
【问题描述】:

如何从以下相同 url 的响应中创建一个 pojo 类。

响应 1: { “信息”:{ “价格”:1, “地图”: { “1”:1, “2”:2, “3”:1, “5”:0.5, “6”:3, “7”:5 }, “价值”:0 } }

响应 2: { “信息”:{ “价格”:1, “地图”: { “1”:1, “2”:6, “3”:4, }, “价值”:1 } }

这里“map”Json 对象中的键是动态的。请帮我创建一个带有动态键的 pojoclass(内部地图,例如:1,2,3...)。

【问题讨论】:

    标签: android json gson


    【解决方案1】:

    终于通过使用得到了我的答案

    private Map<String, Float> map;
    
    public Map<String, Float> getMap() {
    return map;
    }
    

    在 POJO 类中。

    我在 Activity 中调用了 POJO

    Map<String, Float> maps =POJOclass.getMap();
    for (String mapKey :  maps.keySet()) {
    Log.d("Map","mapKey : "+mapKey+" , mapValue : "+maps.get(mapKey)):
    }
    

    【讨论】:

      【解决方案2】:

      只需使用 Gson 将其解析为地图即可。

      Gson gson = new Gson();
      Type type = new TypeToken<Map<String, int>>(){}.getType();
      Map<String, String> myMap = gson.fromJson(response, type);
      

      【讨论】:

        【解决方案3】:

        【讨论】:

          【解决方案4】:

          如果您可以修改收到的回复

          { "info": { "price": 1, "map": 
          [ {"key":"1","value": "1"},{"key":"2","value":2},...], "value": 0 } }
          

          那么你可以使用下面的 POJO 来解决它

          public class Info {
            @SerializedName("price")
            private String price;
          
            @SerializedName("map")
            private ArrayList<MapEntry> map;
          
            @SerializedName("value")
            private String value; 
          
          }
          
          public class MapEntry{
            @SerializedName("key")
            private String key;
          
            @SerializedName("value")
            private String value;
          
          }
          

          【讨论】:

          • 有没有其他办法,不改变响应? @hars
          • 我认为将其反序列化为地图可以使这项工作为您服务。参考stackoverflow.com/questions/14263114/…
          • 您好,感谢您的帮助。但是我尝试了另一种方法,我使用了私有 Map 地图;在 pojo 课上
          猜你喜欢
          • 2022-06-10
          • 2012-12-25
          • 2021-05-11
          • 1970-01-01
          • 2012-02-06
          • 2018-03-23
          • 2020-02-09
          • 2020-04-15
          • 2011-04-29
          相关资源
          最近更新 更多