Пожалуйста, помогите мне создать быструю модель для JSON - PullRequest
0 голосов
/ 01 ноября 2019
{"dataList":{"1547795650562": {
        "c0a8007b-6759-111d-8167-59e8dabe0086": {
          "recordDate": 1547795650562,
          "resultValue": "160",
          "vitalParameter": {
            "uom": {
              "code": "KG",
              "name": "KG",
              "id": "c0a8007b-6759-111d-8167-59e76204007f"
            },
            "resultType": {
              "code": "VSRTNUMERIC",
              "name": "Numeric",
              "id": "20cf4756-40b0-4cc1-acb5-861765370a41"
            },
            "code": "29463-7",
            "name": "Weight",
            "id": "c0a8007b-6759-111d-8167-59e8dabe0086"
          },
          "id": "c0a8007b-6855-1d16-8168-5fd18fa301b7"
        }}
}}

получая 1547795650562 и c0a8007b-6759-111d-8167-59e8dabe0086 в качестве имен классов. Но я не хочу вот так;

class DataList : NSObject, NSCoding{
    var 1547795650562 : 1547795650562!
}

class 1547795650562 : NSObject, NSCoding{
    var c0a8007b6759111d816759e8dabe0086 : VitalParameter!
}

Но проблема здесь в том, что 1547795650562 и c0a8007b-6759-111d-8167-59e8dabe0086 не могут быть жестко запрограммированы, потому что они могут измениться

c0a8007b-6759-111d-8167-59e8dabe0086 - это динамический идентификатор, а 1547795650562 - это recordDate. Внутренний объект повторяется

Но мне нужно отобразить, так как ключи имеют recordDate и id соответственно.

1 Ответ

0 голосов
/ 01 ноября 2019

Попробуйте использовать Codable вместо NSCoding для анализа данных JSON.

Модели:

struct Root: Codable {
    let dataList: [String:[String:Record]]
}

struct Record: Codable {
    let recordDate: Int
    let resultValue: String
    let vitalParameter: VitalParameter
    let id: String
}

struct VitalParameter: Codable {
    let uom, resultType: ResultType
    let code, name, id: String
}

struct ResultType: Codable {
    let code, name, id: String
}

Анализируйте данные JSON, используя указанные выше модели, такие как

do {
    let response = try JSONDecoder().decode(Root.self, from: data)
    print(response)
} catch {
    print(error)
}

Примечание : вы можете использовать https://app.quicktype.io для мгновенного получения моделей из вашего JSON. Внесите изменения в соответствии с вашими требованиями, и все готово.

...