gpt4 book ai didi

swift - 如何在 swift4 中为这个 json 数据创建一个结构?

转载 作者:行者123 更新时间:2023-11-28 10:34:59 24 4
gpt4 key购买 nike

为了练习,我创建了一个非常简单的json数据,但是在JSONDecoder().decode时总是解码错误。我尝试了一些方法来修改我的结构,但都得到了相同的错误(打印“error0”)。代码在下面。

struct ss : Codable {
var a : String
var b : String
}


let js = "[{\"a\":\"1\",\"b\":\"2\"},{\"c\":\"3\",\"d\":\"4\"}]"
let data = js.data(using: .utf8)

let a = [ss].self
do {
if let s = try? JSONDecoder().decode(a, from : data!) {
print(s[0].a)
}else{
print("error0")
}
}catch{
print("error1")
}

最佳答案

你的JSON替换有问题

let js = "[{\"a\":\"1\",\"b\":\"2\"},{\"c\":\"3\",\"d\":\"4\"}]"

let js = "[{\"a\":\"1\",\"b\":\"2\"},{\"a\":\"3\",\"b\":\"4\"}]"

另一个字典没有键 ab 这就是为什么 JSONDecoder 不能解码 现在您的更新代码将是:

struct ss : Codable {
var a : String
var b : String
}


let js = "[{\"a\":\"1\",\"b\":\"2\"},{\"a\":\"3\",\"b\":\"4\"}]"
let data = js.data(using: .utf8)

let a = [ss].self

do {
let jsonDecoder = JSONDecoder()
let s = try jsonDecoder.decode(a, from: data!)
print(s[0].a) //"1\n"
} catch {
print(error)
}

PS:正如@Milander 建议的那样,如果您不想修复 JSON,您可以在 Struct 中创建 optional 属性,例如

struct ss : Codable {
let a, b, c, d: String?
}

关于swift - 如何在 swift4 中为这个 json 数据创建一个结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54019504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com