您好,我正在使用GSON来分析包含以下JSON的路由对象:
{
"mapOverlays": [
{
"id": 1,
"route": 73,
"url": "https://en.wikiarquitectura.com/wp-content/uploads//2017/01/White_House_distr_2C2BA.png",
"lat": 0.00,
"lng": 0.00,
"width": 2000,
"height": 1335,
"scale": 1,
"constraints": {
"w": [
0.00,
0.00
],
"x": [
0.00,
0.00
],
"y": [
0.00,
0.00
]
},
"flags": ""
}
]
}
问题是,当我尝试访问constraints的JsonObject时,我得到一个空的JSONObject。
这里是底图的数据模型类。
import com.google.gson.JsonObject
import com.travelstorysgps.travelstoryssdk.extensions.md5
import java.io.Serializable
class Basemap (
val id: Int,
val route: Int,
val url: String,
val lat: Double,
val lng: Double,
val width: Int,
val height: Int,
val scale: Double,
val constraints : JsonObject ,
val flags: String
) : Serializable {
val filename: String
get() = url.md5() + ".file"
}
这是我调用Basemap.constraints时得到的输出:I/System.out: [BASEMAP]: {}
它应包含名为w,x和y的JSONArray。
我的数据模型类有问题吗?
编辑:这是父Route对象:
package com.travelstorysgps.travelstoryssdk.data.model
import android.content.Context
import com.travelstorysgps.travelstoryssdk.data.Location
import java.io.Serializable
import java.util.*
import kotlin.math.floor
data class Route(
val route: RouteDefinition,
val tracks: List<Track>,
val geotags: List<Geotag>,
val images: List<Image>,
val music: List<Music>,
val assets: AssetList,
val orgs: List<Organization>,
val mapOverlays: List<Basemap>,
val ecoupons: List<Coupon>,
var distance: Int,
var routeKey: String = "",
var isDownloading: Boolean = false
) : Serializable {
val artists: List<Int>
get() = music.map { it.artist }.distinct()
}```
Basemap
对象包装在mapOverlays
数组字段下的父JSON对象中。您需要一个附加的类以反序列化适当的结构。
data class Parent(val mapOverlays: List<Basemap>)
fun someFn(json: String) {
val parent = Gson().fromJson(json, Parent::class.java)
println(parent.mapOverlays[0].constraints)
}