【问题标题】:Please help me to create a swift model for json请帮我为json创建一个快速模型
【发布时间】:2019-11-01 05:41:16
【问题描述】:
{"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 是动态 ID,1547795650562 是记录日期。内部对象是重复的

但我必须映射,因为键分别是 recordDate 和 id。

【问题讨论】:

  • 到目前为止你有没有尝试过?另外,您需要从这个 JSON 中获得哪些所有数据?
  • 是的。但是将 1547795650562 和 c0a8007b-6759-111d-8167-59e8dabe0086 作为类名。但我必须映射,因为键分别是 recordDate 和 id。谢谢
  • 无法理解。请详细说明。
  • 你能添加一些代码来给你上课以及你是如何阅读这个 JSON 的吗?我们可以帮助您解决模态创建问题。
  • 类 DataList : NSObject, NSCoding{ var 1547795650562 : 1547795650562!

标签: json swift nscoding


【解决方案1】:

尝试使用 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 中获取模型。根据您的要求进行更改,一切顺利。

【讨论】:

  • 但这里的问题是,1547795650562 和 c0a8007b-6759-111d-8167-59e8dabe0086 不能硬编码,因为它们可能会改变
  • c0a8007b-6759-111d-8167-59e8dabe0086 是动态 ID,1547795650562 是记录日期。内部对象是重复的
  • 根据需求更新了模型,
  • 如何解析为一个对象的id作为key
  • “解析为一个对象的 id 作为其键”是什么意思?举个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-13
  • 1970-01-01
  • 2019-08-20
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多