我有一个来自服务器的嵌套JSON,如您所见,位置中有一个嵌套数据
{
"id": "18941862",
"name": "Pizza Maru",
"url": "https://www.zomato.com/jakarta/pizza-maru-1-thamrin?utm_source=api_basic_user&utm_medium=api&utm_campaign=v2.1",
"location": {
"address": "Grand Indonesia Mall, East Mall, Lantai 3A, Jl. M.H. Thamrin No. 1, Thamrin, Jakarta",
"locality": "Grand Indonesia Mall, Thamrin",
"city": "Jakarta",
"city_id": 74,
"latitude": "-6.1954467635",
"longitude": "106.8216102943",
"zipcode": "",
"country_id": 94,
"locality_verbose": "Grand Indonesia Mall, Thamrin, Jakarta"
},
"currency": "IDR"
}
我正在使用retrofit和gson转换器。通常我需要为这样的东西创建2个数据类来将JSONMap到POJO。因此我需要创建Restaurant类和Location类,但我需要将json对象扁平化为单个的Restaurant类,如下所示
data class Restaurant : {
var id: String
var name: String
var url: String
var city: String
var latitude: Double
var longitude: Double
var zipcode: String
var currency: String
}
如何做到这一点,如果我使用的是改型和gson转换器?
java或Kotlin都可以
1条答案
按热度按时间j0pj023g1#
这个解决方案是解决这个问题的银,怎么欣赏都不为过。
先看这个Kotlin文件:
然后将其添加到
Gson
,如下所示:使用您的示例,可以如下解析pojo:
你甚至可以写一个数组的路径,例如
@Flatten("friends.0.name")
= get first friend 's name。但是,请注意,我将
TypeAdapter
剥离为只读取/使用json对象。如果您也想使用write()
来编写json,则可以实现它。不客气。