如何使用 Gson 反序列化此 JSON?

How do I deserialize this JSON using Gson?

我有点迷路了,

我有这样一个 JSON 字符串:

{  
"type":"fuu",
"message":"bar",
"data":{  
  "5":{  
     "post":"foo",
     "type":"bar",

  },
  "0":{  
     "post":"foo",
     "type":"bar",

  },
  "1":{ 
     "post":"foo",
     "type":"bar",

   },

  // and so on...

 }
}

请问如何使用 Gson 将其解析为 POJO? (我需要获取对象列表)

我对对象列表元素前面的数字有点迷惑....

对于 "data" 部分,我会尝试将其解析为 Map<Integer, TypedPost> 结构,有关说明,请参阅 this thread

试试这个 -

Pojo.java

import java.util.Map;

public class Pojo {
    private String type;
    private String message;
    private Map<Integer, InnerPojo> data;
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public Map<Integer, InnerPojo> getData() {
        return data;
    }
    public void setData(Map<Integer, InnerPojo> data) {
        this.data = data;
    }
    @Override
    public String toString() {
        return "Pojo [type=" + type + ", message=" + message + ", data=" + data
                + "]";
    }
}

内Pojo.java

public class InnerPojo {
    private String type;
    private String post;
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getPost() {
        return post;
    }
    public void setPost(String post) {
        this.post = post;
    }
    @Override
    public String toString() {
        return "InnerPojo [type=" + type + ", post=" + post + "]";
    }
}

Main.java

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.testgson.beans.Pojo;

public class Main {
    private static Gson gson;

    static {
        gson = new GsonBuilder().create();
    }

    public static void main(String[] args) {
        String j = "{\"type\": \"fuu\", \"message\": \"bar\", \"data\":{ \"0\":{\"post\": \"foo\", \"type\": \"bar\"}, \"1\":{\"post\": \"foo\", \"type\": \"bar\"}, \"5\":{\"post\": \"foo\", \"type\": \"bar\"}}}";
        Pojo p = gson.fromJson(j, Pojo.class);
        System.out.println(p);
    }
}

结果是-

Pojo [type=fuu, message=bar, data={0=InnerPojo [type=bar, post=foo], 1=InnerPojo [type=bar, post=foo], 5=InnerPojo [type=bar, post=foo]}]