使用 Gson 将 json 反序列化到另一个 Java 对象

Deserialize json filed to a different Java Object with Gson

我正在我的应用程序中使用 Google 个地点。当我请求附近的地点时,我会得到一个地点列表。每个地方都有这个 Json 结构:

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

我的 Java Place class 是这样声明的:

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

如何将 lat json 字段分配给 latitude 成员并将 lng 字段分配给 longitude?是否可以使用 Gson 或者我是否也应该创建一个几何体 class 和一个位置 class?

我尝试使用这些序列化名称,但它不起作用:

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

我看到的第一个解决方案是实现自定义 JsonDeserializer。此外,将用于与外部服务和域对象进行通信的 classes 分开也是值得的。然后你将有一些 class GooglePlace,你的域 class Place 以及一个适配器(转换器)来转换 GooglePlace放置和倒退。在这种情况下,您的实施将更加灵活。