gpt4 book ai didi

ios - 在 Swift 5、iOS 14 : Invalid top-level type in JSON write 中编码可编码结构时出现 NSJSONSerialization 错误

转载 作者:行者123 更新时间:2023-12-04 08:44:14 28 4
gpt4 key购买 nike

我创建了一个简单的结构:

struct CodePair: Codable {
var userId: Int
var code: String
}
我尝试使用以下代码将结构编码为 JSON:
let id = 5
let code = "ABCDEF"

let codePair = CodePair(userId: id, code: code)
let json = try? JSONSerialization.data(withJSONObject: codePair)
print(json)

我收到以下错误:
terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'
terminating with uncaught exception of type NSException
CoreSimulator 732.17 - Device: iPhone 8 (1ADCB209-E3E6-446F-BC41-3A02B418F7CE) - Runtime: iOS 14.0 (18A372) - DeviceType: iPhone 8
我有几个结构设置几乎相同,但没有一个遇到此问题。有谁知道这里发生了什么?
(当然,这是对 API 的更大异步调用的一部分,但这是有问题的代码。)

最佳答案

您使用了错误的编码器。您应该使用 JSONEncoder 编码方法而不是 JSONSerialization.data(withJSONObject:)

let id = 5
let code = "ABCDEF"

let codePair = CodePair(userId: id, code: code)
do {
let data = try JSONEncoder().encode(codePair)
print(String(data: data, encoding: .utf8)!)
} catch {
print(error)
}
这将打印:

{"userId":5,"code":"ABCDEF"}


您尝试使用的方法需要字典或数组:
let jsonObject: [String: Any] = ["userId":5,"code":"ABCDEF"]
do {
let jsonData = try JSONSerialization.data(withJSONObject: jsonObject)
print(String(data: jsonData, encoding: .utf8)!) // {"userId":5,"code":"ABCDEF"}
} catch {
print(error)
}

关于ios - 在 Swift 5、iOS 14 : Invalid top-level type in JSON write 中编码可编码结构时出现 NSJSONSerialization 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64408886/

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