ObjectMapper 和具有唯一键的数组
ObjectMapper and arrays with unique keys
我 运行 遇到了 ObjectMapper 的问题以及 json 响应从服务器返回的方式。
有没有办法让 ObjectMapper 解析这个响应并创建一个房间数组?
目前我不能直接映射 json 因为键是唯一的,并且会改变每个请求,我也不能使用 ObjectMapper 方式访问带点符号的嵌套对象,rooms.0.key
作为我不确定有多少对象,以及将显示的密钥。
是否有解析此响应的简单方法。
"rooms": {
"165476": {
"id": "165476",
"area": {
"square_feet": 334,
"square_meters": 31
},
"165477": {
"id": "165477",
"area": {
"square_feet": 334,
"square_meters": 31
},
使用Codable
解析上面的JSON响应。
型号:
struct Rooms: Codable {
let rooms: [String:Room]
}
struct Room: Codable {
let id: String
let area: Area
}
struct Area: Codable {
let squareFeet: Int
let squareMeters: Int
}
解析 JSON data
像这样,
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let response = try decoder.decode(Rooms.self, from: data)
print(response.rooms.first?.key) //for the above json it will print "165476"
} catch {
print(error)
}
我 运行 遇到了 ObjectMapper 的问题以及 json 响应从服务器返回的方式。 有没有办法让 ObjectMapper 解析这个响应并创建一个房间数组?
目前我不能直接映射 json 因为键是唯一的,并且会改变每个请求,我也不能使用 ObjectMapper 方式访问带点符号的嵌套对象,rooms.0.key
作为我不确定有多少对象,以及将显示的密钥。
是否有解析此响应的简单方法。
"rooms": {
"165476": {
"id": "165476",
"area": {
"square_feet": 334,
"square_meters": 31
},
"165477": {
"id": "165477",
"area": {
"square_feet": 334,
"square_meters": 31
},
使用Codable
解析上面的JSON响应。
型号:
struct Rooms: Codable {
let rooms: [String:Room]
}
struct Room: Codable {
let id: String
let area: Area
}
struct Area: Codable {
let squareFeet: Int
let squareMeters: Int
}
解析 JSON data
像这样,
do {
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase
let response = try decoder.decode(Rooms.self, from: data)
print(response.rooms.first?.key) //for the above json it will print "165476"
} catch {
print(error)
}