我正在尝试使用gson从JSON对象反序列化数据。我在设计课程时遇到了麻烦。 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
}
}]
以下是我为json对象使用java
与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对象都很陌生。非常感谢你
答案 0 :(得分:4)
除非有一些非常有说服力的理由要求它们,否则我将摆脱内部类定义。如果命名空间是目标,那么至少使它们成为静态嵌套类定义。这也将使它们更容易反序列化。
发布了反序列化到静态嵌套类和内部类的示例