考虑一个复杂的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。在不为每个单独的集群和子集群对象创建类的情况下,我如何做到这一点,因为这是不可信的。
发布于 2015-10-02 19:43:18
我认为您应该创建一个实现com.google.gson.JsonDeserializer的类。也有com.google.gson.JsonSerializer向相反的方向走。
该接口是通用的,因此您给它提供了一个表示数据的Java存储的自定义类。然后在方法中,解析JSON并构建对象。
这允许您编写自定义反序列化程序,而不必生成各种Java类。
最近,我在应用程序中使用了这种方法来反序列化一些棘手的JSON。
本文档解释如何编写自定义反序列化器:GSON指南
https://stackoverflow.com/questions/32913917
复制相似问题