【发布时间】:2014-09-10 14:31:55
【问题描述】:
我有以下示例 JSON:
{
"birds":[
{
"id":"SAMPLEID",
"isTest":true,
"externalId":{
"Main":[
"123ABC"
],
"Sub":[
"456"
]
},
"dinos":[
],
"rhinos":[
{
"id":"SUPER100ID",
"isTest":true,
"externalId":{
"famousId":[
"23|45"
]
},
"dinos":[
],
"pelicans":[
{
"id":"D4CLIK",
"isTest":true,
"bird":null,
"crazyArray":[
]
},
{
"id":"DID123",
"type":"B",
"name":"TONIE",
"isTest":true,
"bird":null,
"subspecies":[
]
}
]
}
]
}
],
"metaData":{
"count":1
}
}
我想使用 GSON 反序列化这个 JSON 字符串并只获取“着名的 ID”成员的值。
我查看了其他答案,看来我绝对需要为此创建类。
是否可以在不映射 POJO 的情况下使用 JsonParser、JsonElement、JsonArray 等反序列化?我已经尝试了几种排列方式,但都没有成功。
我也尝试了以下代码,但也没有按预期工作:
JsonObject o = new JsonParser().parse(jsonResponseString).getAsJsonObject();
Gson gson = new Gson();
enterprises ent = new enterprises();
ent = gson.fromJson(o, enterprises.class);
@Getter
@Setter
class birds {
@JsonProperty("rhinos")
List<Rhino> rhinos = new ArrayList<Rhino>();
}
@Getter
@Setter
class Rhino {
@JsonProperty("externalId")
ExternalId externalId;
}
@Getter
@Setter
@JsonPropertyOrder({
"famousId"
})
class ExternalId {
@JsonProperty("famousId")
List<String> famousId = new ArrayList<String>();
}
不幸的是,这也不起作用,所以我猜一个两部分的问题......是否可以简单地反序列化并获取我想要的 FamousId 的字符串值,以及我当前的类结构有什么不正确的?
【问题讨论】:
标签: java json serialization gson deserialization