java - 使用 GSON 反序列化多个内部类

标签 java json serialization gson

我正在尝试使用 gson 从 JSON 对象反序列化数据。我在 1) 设计类(class)时遇到了麻烦。 2) 从内部列表对象中获取一个空对象。

这是 JSON 对象的示例

{
  "spatialReference" : {
    "wkid" : 102113
  },
  "candidates" : [
    {
      "address" : "202 S Van Ness Ave, San Francisco, CA, 94110",
      "location" : {
        "x" : -13627444.2697,
        "y" : 4546249.2471000031
      },
      "score" : 85.969999999999999,
      "attributes" : {
        "Loc_name" : "US_RoofTop",
        "Score" : 85.969999999999999,
        "Match_addr" : "505 S Van Ness Ave, San Francisco, CA, 94110",
        "House" : "505",
        "Side" : "R",
        "PreDir" : "S",
        "PreType" : "",
        "StreetName" : "Van Ness",
        "SufType" : "Ave",
        "SufDir" : "",
        "City" : "San Francisco",
        "State" : "CA",
        "ZIP" : "94110",
        "X" : -122.417416,
        "Y" : 37.764772999999998,
        "Disp_Lon" : -122.416991,
        "Disp_Lat" : 37.764809999999997,
        "Addr_type" : "StreetAddress",
        "Province" : "",
        "Postal" : "",
        "FromAddr" : "",
        "ToAddr" : "",
        "ZIP4" : "",
        "ZIP4_TYPE" : "",
        "User_fld" : "",
        "Ldu" : "",
        "xmin" : 0,
        "xmax" : 0,
        "ymin" : 0,
        "ymax" : 0
      }
    },
    {
      "address" : "505 Van Ness Ave, San Francisco, CA, 94102",
      "location" : {
        "x" : -13627778.172800001,
        "y" : 4548412.0926000029
      },
      "score" : 100,
      "attributes" : {
        "Loc_name" : "US_Streets",
        "Score" : 100,
        "Match_addr" : "505 Van Ness Ave, San Francisco, CA, 94102",
        "House" : "",
        "Side" : "L",
        "PreDir" : "",
        "PreType" : "",
        "StreetName" : "Van Ness",
        "SufType" : "Ave",
        "SufDir" : "",
        "City" : "San Francisco",
        "State" : "CA",
        "ZIP" : "94102",
        "X" : -122.42041500000001,
        "Y" : 37.780130999999997,
        "Disp_Lon" : 0,
        "Disp_Lat" : 0,
        "Addr_type" : "StreetAddress",
        "Province" : "",
        "Postal" : "",
        "FromAddr" : "501",
        "ToAddr" : "525",
        "ZIP4" : "",
        "ZIP4_TYPE" : "",
        "User_fld" : "",
        "Ldu" : "",
        "xmin" : 0,
        "xmax" : 0,
        "ymin" : 0,
        "ymax" : 0
      }
    }]

这是我为使用 java 的 json 对象与 gson 一起使用的类的示例

    public class Response {

    public Response()
    {}

    SpatialReference spatial;

    public List<Candidates> candidate;

    public class Candidates
    {
        public Candidates()
        {}

        @SerializedName("address")
        public String address;

        Location location;

        @SerializedName("score")
        public double score;

        Attribute attributes;

        Double getScore()
        {
            return score;
        }

    }

    public class Attribute {

        public Attribute()
        {}

        @SerializedName("Disp_Lon")
        public double dispLong;

        @SerializedName("Disp_Lat")
        public double dispLat;

    }

    public class Location {

        public Location()
        {}

        @SerializedName("x")
        public double x;

        @SerializedName("y")
        public double y;

    }

    public class SpatialReference {

        SpatialReference()
        {}

        @SerializedName("wkid")
        public String wkid;

    }

}

这里是使用gson的示例代码

        Gson gson= new Gson()

        response1= gson.fromJson(reader, Response.class);

        return response1;

任何帮助将不胜感激,我对 GSON 和检索 JSON 对象还很陌生。非常感谢

最佳答案

我会摆脱内部类定义,除非有一些非常令人信服的理由需要它们。如果命名空间是目标,那么至少使它们成为静态嵌套类定义。这也将使它们更容易反序列化。

我在 http://programmerbruce.blogspot.com/2011/06/gson-v-jackson.html#TOC-Nested-Classes-including-Inner-Clas 发布了反序列化为静态嵌套类和内部类的示例

关于java - 使用 GSON 反序列化多个内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14843322/

相关文章:

php - 如何在Doctrine2中查询WHERE = 'value from a related Entity'

.net - Json 反序列化到字典 .NET

java - Collections.sort 在 Java 中 Guava 的 Lists.transform 函数之后对列表进行排序时抛出 UnsupportedOperationException?

java - 在二维六边形网格上寻找邻居

json - Facebook feeds - 限制退回的金额

javascript - 在 jQuery 中检查具有特定列表值的复选框的最快方法

c# - 列表项的条件 XML 序列化

c# - 将元素值及其属性序列化

java - 如何运行 WorkManager 每 5 秒重试一次工作

java - 如何从 ArrayList 对象填充 jtable?