首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSON :反序列化复杂的JSON字符串

JSON :反序列化复杂的JSON字符串
EN

Stack Overflow用户
提问于 2015-10-02 18:50:39
回答 1查看 110关注 0票数 1

考虑一个复杂的JSON字符串

代码语言:javascript
复制
{
  "1": {
    "name": "1",
    "CLUSTERS": {
      "3": {
        "name": "3",
        "SUBCLUSTERS": {
          "6": {
            "INSTANCES": [
              {
                "SERVER": "4",
                "ID": "133",
                "DESCR": "Hi"
              },
              {
                "SERVER": "5",
                "ID": "6",
                "DESCR": "Lo"
              },            
            "name": "6"
          }
        }
      }
    }
  }
}

它拥有数百个CLUSTERSSUBCLUSTERS。您将如何用Java反序列化这样复杂的结构。是否有一种无需创建类(如public class Cluster3public class Subcluster6 )的反序列化方法?

到目前为止,我有这样的课程:

Cluster.java

代码语言:javascript
复制
public class Cluster {

    @SerializedName("SUBCLUSTERS")
    private Subcluster subCluster;

    @SerializedName("name")
    private String name;
}

Subcluster.java

代码语言:javascript
复制
public class Subcluster {

    @SerializedName("INSTANCES")
    private InstanceArray instanceArray;
}

Site.java

代码语言:javascript
复制
public class Site {

    @SerializedName("CLUSTERS")
    private Cluster cluster;

    @SerializedName("name")
    private String name;
}

Instance.java

代码语言:javascript
复制
public class Instance {

    @SerializedName("SERVER")
    private String serverName;

    @SerializedName("ID")
    private String instanceId;

    @SerializedName("DESC")
    private String description;
}

InstanceArray.java

代码语言:javascript
复制
public class InstanceArray {

    @SerializedName("INSTANCES")
    private List<Instance> instance;
}

但我认为我没有考虑到实际的CLUSTERSSUBCLUSTERS对象本身,比如36。在不为每个单独的集群和子集群对象创建类的情况下,我如何做到这一点,因为这是不可信的。

EN

回答 1

Stack Overflow用户

发布于 2015-10-02 19:43:18

我认为您应该创建一个实现com.google.gson.JsonDeserializer的类。也有com.google.gson.JsonSerializer向相反的方向走。

该接口是通用的,因此您给它提供了一个表示数据的Java存储的自定义类。然后在方法中,解析JSON并构建对象。

这允许您编写自定义反序列化程序,而不必生成各种Java类。

最近,我在应用程序中使用了这种方法来反序列化一些棘手的JSON。

本文档解释如何编写自定义反序列化器:GSON指南

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32913917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档