gpt4 book ai didi

json - 如何在 Swift 中将 JSON 响应转换为字典格式

转载 作者:行者123 更新时间:2023-11-30 10:45:15 24 4
gpt4 key购买 nike

如何转换此 JSON 响应,并在消息中包含数百个键,以便能够将其分配给变量类型 [AnyHashable: Any]

JSON

{
"content": {
"message": {
"greet": "Hello world",
"error": "There is an error",
"thanks": "Thank you",
...
}
}
}

尝试

解析 JSON 后,我无法将 jsonData 分配给接受 [AnyHashable: Any] 的变量。我尝试将 message 类型更改为 [AnyHashable: Any],但它不符合 Decodable

// Model.swift

struct TestCase: Decodable {
let content: Content
}

struct Content: Decodable {
let message: [String: String]
}


// ViewController.swift

private var testVariable: [AnyHashable: Any]

private func loadJson(filename: String) {
if let url = Bundle.main.url(forResource: filename, withExtension: "json") {
do {
let data = try Data(contentsOf: url)
let decoder = JSONDecoder()
let jsonData = try decoder.decode(TestCase.self, from: data)

// Problem faced
testVariable = jsonData // error

} catch let jsonError {
print("JsonError: ", jsonError)
}
}
}

最佳答案

你不能两者兼得。

您想用 Decodable 解析 JSON那么你必须声明 testVariable作为

private var testVariable : TestCase?

或者您想保留testVariable[AnyHashable: Any]然后删除结构并使用传统的 JSONSerialization 解码 JSON

<罢工>

<罢工>
//print(s)
struct TestCase: Decodable {
let content: Content
}

struct Content: Decodable {
let message: [String: String]
}

<罢工>

// ViewController.swift

private var testVariable = [AnyHashable:Any]()

private func loadJson(filename: String) {
if let url = Bundle.main.url(forResource: filename, withExtension: "json") {
do {
let data = try Data(contentsOf: url)
testVariable = try JSONSerialization.jsonObject(with: data) as? [AnyHashable: Any] ?? [:]

} catch {
print("JsonError: ", error)
}
}
}

关于json - 如何在 Swift 中将 JSON 响应转换为字典格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55859852/

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