Swift 4 JSONEncoder不能对String或Int进行编码,但它们遵循Codable协议

时间:2018-04-05 09:01:32

标签: swift jsonencoder

let encoder = JSONEncoder()

do {
   let encodData = try encoder.encode("test string") // same as Int type
   print(encodData) // nil
} catch let err {
   print(err.localizedDescription) // The data couldn’t be written because it isn’t in the correct format.
}

如何编码这些类型值

1 个答案:

答案 0 :(得分:2)

顶级(根)JSON对象只能是数组或字典。例如:

do {
    let encoder = JSONEncoder()
    let encodData = try encoder.encode(["test string"])
    print(String(data: encodData, encoding: .utf8)!) 
    // ["test string"]

} catch {
    print(error.localizedDescription)
}