ObjectMapper 和具有唯一键的数组
Posted
技术标签:
【中文标题】ObjectMapper 和具有唯一键的数组【英文标题】:ObjectMapper and arrays with unique keys 【发布时间】:2020-07-01 15:57:46 【问题描述】:我遇到了 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
,
【问题讨论】:
在此处以文本格式添加 Json。 @PGDev 已添加到问题中。 放弃ObjectMapper
,转而使用Codable
【参考方案1】:
使用 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 和具有唯一键的数组的主要内容,如果未能解决你的问题,请参考以下文章