首页 > 解决方案 > ObjectMapper 和具有唯一键的数组

问题描述

我遇到了 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
            },

标签: swiftobjectmapper

解决方案


用于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
}

像这样解析JSONdata

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)
}

推荐阅读