gpt4 book ai didi

json - 在 swift 4 中解析 JSON 时出错

转载 作者:行者123 更新时间:2023-11-28 12:09:09 26 4
gpt4 key购买 nike

我试图在 swift 4 中解析 JSON,但出现以下错误:

Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.

这是我的代码:

struct Beer : Codable {
let name: String
let brewery: String
let style: String
}

let jsonResponse = [
"name": "Endeavor",
"brewery": "Saint Arnold",
"style": "ipa"
]

let jsonString = String(describing: jsonResponse)

let jsonData = jsonString.data(using: .utf8)

let decoder = JSONDecoder()

let beer = try! decoder.decode(Beer.self, from: jsonData!)

print(beer)

最佳答案

您没有正确创建 JSON 数据。 String(describing:) 不会创建 JSON 字符串。它创建一个对象的调试描述,这与 JSON 没有有关。

与其使用字典,不如从 Beer 对象创建 Data,然后再次反序列化它:

struct Beer : Codable {
let name: String
let brewery: String
let style: String
}

//Create a Beer
let aBeer = Beer(name: "Endeavor", brewery: "Saint Arnold", style: "ipa") //Create a Beer object
//--------------------------------------
//Serialize (dehydrate) the Beer
let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted
let jsonData: Data
do {
jsonData = try encoder.encode(aBeer)
} catch {
fatalError("Splat!. \(error.localizedDescription)")
}
//---------------------------------------
//print the dehydrated Beer

if let jsonText = String(data: jsonData, encoding: .utf8) {
print("JSON text = \(jsonText)")
}
//---------------------------------------
//Deserialize (rehydrate) the Beer
let decoder = JSONDecoder()
let decodedBeer = try! decoder.decode(Beer.self, from: jsonData)

print("Rehydrated beer = \(decodedBeer)")

关于json - 在 swift 4 中解析 JSON 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876384/

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