像这样定义一个结构体A:
struct A: Codable {
let value1: String
let value2: String
}
let a: A = A(value1: "1", value2: "2")
let aData: Data = try! JSONEncoder().encode(a)
let aStr: String = String(data: aData, encoding: .utf8)!
print(aStr)
let jsonString = "{\"value2\":\"2\",\"value1\":\"1\"}"
let jsonData: Data = jsonString.data(using: .utf8)!
let a1 = try? JSONDecoder().decode(A.self, from: jsonData)
print(a1)
let arrayString = "[{\"value2\":\"2\",\"value1\":\"1\"}]"
let arrayData: Data = arrayString.data(using: .utf8)!
let aArray = try! JSONDecoder().decode([A].self, from: arrayData)
print(aArray)
现在给你一个字符串:arrayString
let arrayString = "[{"value2":"2","value1":"1"}]"
let arrayData: Data = arrayString.data(using: .utf8)!
没有
JSONDecoder
到aArray
然后得到aArray.first
,然后JSONEncoder
到aData
并且不要
replace
"["
,"]"
到""
如何直接从 Decoder 获取 aData?
struct B: Codable {
let aData: Data
init(from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
// can I get aData from decoder or container directly?
// I want to get it this way, is it possible?
}
}
try? JSONDecoder().decode([B].self, from: arrayData)
or?
try? JSONDecoder().decode(B.self, from: arrayData)
or some way using Decoder?
谢谢!