Как разобрать сгруппированный вложенный словарь в swift - PullRequest
0 голосов
/ 14 апреля 2020

Пожалуйста, помогите мне разобрать приведенный ниже ответ json в SWIFT5, поскольку я получаю нулевые значения для данных пользователя и группы.

{
    "user": {
        "0": {
            "id": "5",
            "name": "ABC"
        }
    },
    "group": {
        "0": {
            "id": "510",
            "name": "XYZ"
        }
    }
}


if let unwrappedData = data {

                    do{
                        let json = try JSONSerialization.jsonObject(with: unwrappedData, options: [])
                        print(json)

                        if let user = try? JSONDecoder().decode(UserModel.self,from:unwrappedData){
                            completion(.success(user))

                        }else{
                            let errorResponse = try JSONDecoder().decode(ErrorResponse.self, from: unwrappedData)
                            completion(.failure(errorResponse.errorValue))
                        }
                    }catch{
                        completion(.failure(error))
                    }
                }

Данные пользователя печатаются как ноль. пожалуйста, помогите мне решить проблему.

1 Ответ

1 голос
/ 14 апреля 2020

Я попробовал приведенный ниже код на детской площадке, и он работает как шарм, в чем проблема json?

Модель данных

// MARK: - Sample
struct Sample: Codable {
    let user, group: Group
}

// MARK: - Group
struct Group: Codable {
    let the0: The0

    enum CodingKeys: String, CodingKey {
        case the0 = "0"
    }
}

// MARK: - The0
struct The0: Codable {
    let id, name: String
}

Json Данные

let jsonData = """
{
    "user": {
        "0": {
            "id": "5",
            "name": "ABC"
        }
    },
    "group": {
        "0": {
            "id": "510",
            "name": "XYZ"
        }
    }
}
""".data(using: .utf8)

Json Разбор

if let data = jsonData {
        let object = try? JSONDecoder().decode(Sample.self, from: data)
        print("Json Object", object)
}
else {
    print("Bad Json")
}

Выход

Json Object Optional(SwiftPlayground.Sample(user: SwiftPlayground.Group(the0: SwiftPlayground.The0(id: "5", name: "ABC")), group: SwiftPlayground.Group(the0: SwiftPlayground.The0(id: "510", name: "XYZ"))))
...