使用带有可变子名

时间:2017-10-08 20:27:02

标签: json parsing

我试图用GSON反序列化json。我试图在http://www.jsonschema2pojo.org/中运行响应,但“data”中的变量字段名称导致了问题。

我的问题是

  1. 主要课程应该是什么样的?

  2. “数据”类应该是什么样的?考虑到每个呼叫的数据下的节点会有所不同吗?

  3. 我如何将“数据”读入android studio的列表?

  4. 以下是json response

1 个答案:

答案 0 :(得分:0)

  1. 假设您的JSON输入是一个名为jsonString的String,我们的数据类名为DataClass,那么您的主要应该是这样的:

    Gson gson = new Gson();
    DataClass[] dataClassArray = gson.fromJson(jsonString, DataClass[].class);
    
  2. 这里的诀窍是将“数据”序列化为Map<String, HashMap<String, String>>。您的DataClass应如下所示:

    class DataClass {
        private Integer id;
        // ...
        // TODO: add the rest of your properties...
        // ...
        private HashMap<String, HashMap<String, String>> data;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        // ...            
        //TODO: add getters/setters for the rest of your properties...
        // ...
    
        public HashMap<String, HashMap<String, String>> getData() {
            return data;
        }
    
        public void setData(HashMap<String, HashMap<String, String>> data) {
            this.data = data;
        }
    }
    
  3. 请参阅#1(DataClass [] .class)。如果您真的想要,可以将数组转换为列表。