Codable: 实现在 swift 中像 js 那样使用 JSON

Codable: 实现在 swift 中像 js 那样使用 JSON

js 一样,iOS 11 之后,swift 也可以方便的使用 json 来传递数据了。

要想使用 json, 你操作的类需要实现 Codable 接口
Foundation 中的所有类都已经实现了 Cadable,所以如果你的实体中没有自定义的一些数据类型,都可以直接使用 JSON

js 一样,swift 中的 json 也有:

  • JSONEncoder 将数据转成 json 数据
  • JOSNDecoderjson 数据,转为可用的你需要的数据类型

看下面的 PlayGround 例子便知道如何使用了

import Foundation

struct Person: Codable {
    var name: String
    var age: Int
    var intro: String
}

let kyle = Person(name: "Kyle", age: 29, intro: "A web developer")
let tina = Person(name: "Tina", age: 26, intro: "A teacher for English")
let persons = [kyle, tina]

// Encode
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // setup formatter
let jsonData = try encoder.encode(persons)
print(String(data: jsonData, encoding: .utf8)!)


// Decode
let decoder = JSONDecoder()
// 注意 decode() 中的第一个参数
let people = try decoder.decode(Array.self, from: jsonData)
print(people[0].name)

输出如下:

[
  {
    "name" : "Kyle",
    "age" : 29,
    "intro" : "A web developer"
  },
  {
    "name" : "Tina",
    "age" : 26,
    "intro" : "A teacher for English"
  }
]
Kyle

你可能感兴趣的:(swift,json,xcode,ios)