我有一个地图集应用程序,根据使用的地图集有一些特定的部分。我们基本上将其描述为:
我正在使用flavor来构建与每个地图集相对应的应用程序。例如:
每个地图集都从不同的服务器URL获取数据,虽然API是相同的,但在处理地点详细信息时,返回的JSON有一些特定的部分:
餐馆有jSON属性,如opening_time,food_type,......例如:
{ "name": "", lat: "", lon: "", "opening_time": "", "food_type": "" }
观光网站有JSON属性,如access_type,altitude,......例如:
{ "name": "", lat: "", lon: "", "access_type": "", "altitude": "" }
我正在使用Jackson进行JSON解析并达到以下目的:
我很擅长构建口味,我想知道哪种是处理特定风味代码的最佳方法(Jackson解析和详细视图)。我的意思是最干净,尽可能少的代码重复。
对于视图,我觉得我可以简单地合并一个布局XML,它将覆盖每个变体。这似乎可以解决问题。
对于java代码,我仍然很丢失。也许像是
class Place {
@JsonProperty("name")
String name;
@JsonUnwrapped
Details details;
}
但是如何在没有复制常见的Place代码和解析注释的情况下获取特定于flavor的Details实现?即:
com.atlas.restaurant.Details
com.atlas.sightseeing.Details
PS:我无法改变API和服务器代码。
答案 0 :(得分:1)
没有答案,所以我就是这样做的:
com.example.model.Place
类class Place {
@JsonProperty("name")
String name;
@JsonUnwrapped
Details details;
}
com.example.model.Details
flavor源集restaurant
类
class Details {
@JsonProperty("opening_time")
String openingTime;
}
com.example.model.Details
flavor源集sightseeing
类
class Details {
@JsonProperty("access_type")
String accessType;
}
打开“构建变体”面板,然后选择您正在处理的风格。然后将选择适当的源集。使用flavor时,您可以切换到另一个,如果缺少一个类,您将收到指示它的警告和错误。