使用Gson将json反序列化到不同的Java对象

时间:2015-03-08 15:14:17

标签: java android json gson

我在我的应用中使用Google商家信息。当我要求附近的地方时,我会得到一份地方清单。每个地方都有这种Json结构:

{
     "geometry" : {
        "location" : {
           "lat" : -33.870775,
           "lng" : 151.199025
        }
     },
     ...
}

我的Java Place类是以这种方式声明的:

public class Place {
   private double latitude;
   private double longitude;
   ...
}

如何将lat json字段分配给latitude成员,lng分配给longitude?是否可以使用Gson或者我是否应该创建Geometry类和Location类?

我尝试使用这些序列化名称,但它无效:

@SerializedName("geometry.location.lat") private double latitude;
@SerializedName("geometry.location.lng") private double longitude;

1 个答案:

答案 0 :(得分:2)

我看到的第一个解决方案是实现自定义 JsonDeserializer 。另外值得分离您用于与外部服务和域对象通信的类。然后,您将拥有一些类 GooglePlace ,您的域类放置以及适配器(转换器),以将GooglePlace转换为Place和Backwards。在这种情况下,您的实施将更加灵活。