[英]Java Gson: Deserializing complex JSON string
考虑一个复杂的JSON字符串
{
"1": {
"name": "1",
"CLUSTERS": {
"3": {
"name": "3",
"SUBCLUSTERS": {
"6": {
"INSTANCES": [
{
"SERVER": "4",
"ID": "133",
"DESCR": "Hi"
},
{
"SERVER": "5",
"ID": "6",
"DESCR": "Lo"
},
"name": "6"
}
}
}
}
}
}
有数以百计的CLUSTERS
和SUBCLUSTERS
。 您将如何使用Java反序列化这种复杂的结构。 有没有一种方法可以反序列化而无需创建诸如public class Cluster3
和public class Subcluster6
?
到目前为止,我有这些课程:
Cluster.java
public class Cluster {
@SerializedName("SUBCLUSTERS")
private Subcluster subCluster;
@SerializedName("name")
private String name;
}
Subcluster.java
public class Subcluster {
@SerializedName("INSTANCES")
private InstanceArray instanceArray;
}
Site.java
public class Site {
@SerializedName("CLUSTERS")
private Cluster cluster;
@SerializedName("name")
private String name;
}
Instance.java
public class Instance {
@SerializedName("SERVER")
private String serverName;
@SerializedName("ID")
private String instanceId;
@SerializedName("DESC")
private String description;
}
InstanceArray.java
public class InstanceArray {
@SerializedName("INSTANCES")
private List<Instance> instance;
}
但我不认为我占实际CLUSTERS
和SUBCLUSTERS
对象本身,如3
和6
。 如果不为每个单独的CLUSTER和SUBCLUSTER对象创建类,该怎么办呢?
我认为您应该做的是创建一个实现com.google.gson.JsonDeserializer的类。 还有com.google.gson.JsonSerializer可用于其他方向。
该接口是通用的,因此您给了它一个表示数据的Java存储的自定义类。 然后,在该方法中,解析JSON并构建对象。
这使您无需编写各种Java POJO类就可以编写自定义反序列化器。
最近,我使用这种方法在应用程序中反序列化了一些棘手的JSON。
本文档介绍了如何编写自定义反序列化器: GSON指南
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.