【问题标题】:Swift JSON starts with array parsingSwift JSON 从数组解析开始
【发布时间】:2018-04-17 20:35:55
【问题描述】:

我在解析 JSON 后遇到问题,问题是它以数组开头。我要识别数组的初始结构应该是什么?如果在数组之前有类似“数据”的东西,我会创建另一个结构并提到数据:[Item]? 那里但这个 JSON 只是以数组开头。

[
  {
    "userId": 1,
    "id": 1,
    "title": "TEST text"
  },
  {
    "userId": 2,
    "id": 2,
    "title": "TEST text"
  },
  {
    "userId": 3,
    "id": 3,
    "title": "TEST text"
  }
]

struct Item: Codable {
    var userId: Int?
    var id: Int?
    var title: String?
}

【问题讨论】:

  • 你不需要创建另一个结构,你应该简单地做JSONDecoder().decode([Item].self,from: data)
  • 顺便说一句,如果不是必须的,我不会选择 userIdidtitle
  • 谢谢大卫!我实际上已经尝试过了,但是 Xcode 给了我一个错误,现在我再次尝试并且它成功了。
  • 只是一个小建议:Swift 竭尽全力始终确保哪些属性是正确的引用。如果您设法摆脱 struct 定义中的选项,您的编程将变得更加容易。

标签: json swift codable


【解决方案1】:

你必须再添加一个结构:

第一道

struct totalItem: Codable {
    var total: [Item]?
}
struct Item: Codable {
    var userId: Int?
    var id: Int?
    var title: String?
}
let myStruct = try JSONDecoder().decode(totalItem.self, from: data)

第二种方法:

let myStruct = try JSONDecoder().decode([Item].self, from: data )

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    相关资源
    最近更新 更多