【问题标题】:How do i parse custom JSON Data我如何解析自定义 JSON 数据
【发布时间】:2021-01-29 18:52:44
【问题描述】:

在这里,我根据下面给出的指南提供了代码工作示例,并且似乎得到了空值。

这是我完整的 JSON 数据,

some: {
  "success": true,
  "data": 
[
  {
    "15-10-2020": [
      {
        "id": 100,
        "details": {
          "_id": 1,
          "_title": "My Title"
        },
        "created_at": "2020-10-15"
      },
      {
        "snf_id": 101,
        "details": {
          "_id": 1,
          "_title": "My Title"
        },
        "created_at": "2020-10-15"
      },
      {
         "snf_id": 102,
        "details": {
          "_id": 1,
          "_title": "My Title"
        },
        "created_at": "2020-10-15"
      }
    ],
    "30-09-2020": [
           {
         "snf_id": 301,
        "details": {
          "_id": 8,
          "_title": "My Title"
        },
        "created_at": "2020-09-30"
      }
  ]
  }
],
  "message": "Successfully Retrieved"
}


struct Response : Codable {
    var success : Bool?
    var data : [Data]?
    var message : String?
}

struct Data: Codable {
    var snf_id: Int?
    var details: Details?
    var created_at: String?
}

// MARK: - Details
struct Details: Codable {
    var _id: Int?
    var _title: String?
}

let Response = try JSONDecoder().decode(Response.self, from: data)

为数据返回空值,

▿ 回应 ▿ 成功:可选 - 一些:真的 ▿ 数据:可选 ▿ 一些:1 个元素 ▿ 0 : 数据 - snf_id:无 - 细节:无 - created_at:无 ▿ 留言:可选 - 一些:“成功检索”

【问题讨论】:

    标签: ios arrays json swift


    【解决方案1】:
    some: {
      "success": true,
      "data": 
    [
      {
        "15-10-2020": [
          {
            "id": 100,
            "details": {
              "_id": 1,
              "_title": "My Title"
            },
            "created_at": "2020-10-15"
          },
          {
            "snf_id": 101,
            "details": {
              "_id": 1,
              "_title": "My Title"
            },
            "created_at": "2020-10-15"
          },
          {
             "snf_id": 102,
            "details": {
              "_id": 1,
              "_title": "My Title"
            },
            "created_at": "2020-10-15"
          }
        ],
        "30-09-2020": [
               {
             "snf_id": 301,
            "details": {
              "_id": 8,
              "_title": "My Title"
            },
            "created_at": "2020-09-30"
          }
      ]
      }
    ],
      "message": "Successfully Retrieved"
    }
    
    struct Response : Codable {
        var success : Bool?
        **var data : [[String:[Data]]]?**
        var message : String?
    }
    
    struct Data: Codable {
        var snf_id: Int?
        var details: Details?
        var created_at: String?
    }
    
    // MARK: - Details
    struct Details: Codable {
        var _id: Int?
        var _title: String?
    }
    
    
    let Response = try JSONDecoder().decode(Response.self, from: data)
    

    【讨论】:

      【解决方案2】:

      您的 json 中没有 myData 键,您的 json 顶部结构是一个包含元素的数组,其中每个元素值都是一个数组,例如 [[String: [Root]]]

      struct Root: Codable {
          let id: Int?
          let details: Details
          let createdAt: String
          let snfID: Int?
      
          enum CodingKeys: String, CodingKey {
              case id, details
              case createdAt = "created_at"
              case snfID = "snf_id"
          }
      }
      
      // MARK: - Details
      struct Details: Codable {
          let id: Int
          let title: String
      
          enum CodingKeys: String, CodingKey {
              case id = "_id"
              case title = "_title"
          }
      }
      
      

      解码

       let res = try JSONDecoder().decode([[String: [Root]]].self,from:data)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多