簡體   English   中英

自定義嵌套對象的 Swift 編碼技術?

[英]Swift Encoding Technique for Custom nested Objects?

我需要獲取嵌套對象的編碼

class person {
var name: String?
var phone: String?
var address: Address?
}

class Address {
var area: String?
var city: String?
}

我試過

let data = try? JSONEncoder().encode(person)
let json = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as! [String: Any]

但地址鍵值對沒有得到。

只需實現可Encodable

class Person: Encodable {
  var name: String?
  var phone: String?
  var address: Address?
}

class Address: Encodable {
  var area: String?
  var city: String?
}
let address = Address()
address.area = "Area"
address.city = "City"
let person = Person()
person.name = "name"
person.address = address

let encoded = try JSONEncoder().encode(person)
struct Person: Encodable {
    var name, phone: String
    var address: Address
}

struct Address: Encodable {
    var area, city: String
}
  • 使您需要編碼的模型符合Encodable協議
  • 類型應以大寫字母開頭
  • 如果您確定屬性不會nil請不要將它們設為可選
  • 你可以讓你的模型結構而不是類

然后只需對您的對象進行編碼

let data = try? JSONEncoder().encode(person)

當您需要打印編碼數據時,您需要將它們轉換為String

let data = try! JSONEncoder().encode(person)
let json = String(data: data, encoding: .utf8) ?? ""

如果您需要使用鍵"person"和person對象作為值對對象進行編碼,請編碼字典

let data = try! JSONEncoder().encode(["person": person])
let json = String(data: data, encoding: .utf8) ?? ""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM