swift 对单个值进行解码时有关JSONDecoder的说明

zd287kbt  于 2023-01-12  发布在  Swift
关注(0)|答案(1)|浏览(136)

我试图在JSONDecoder上执行一些测试,我遇到了一个奇怪的行为,特别是当我使用下面的代码时,抛出了一个错误。

let data = "Sample String".data(using: .utf8)!

do {
    let decoder = JSONDecoder()
    let decoded = try decoder.decode(String.self, from: data)
    print(decoded)
} catch {
    print(error)
}

数据损坏(Swift.解码错误.上下文(编码路径:[],调试说明:“给定数据不是有效的JSON。",underlyingError:可选(错误域=NSCocoaErrorDomain代码=3840“第1行第0列附近的值无效。”用户信息={NSDebugDescription=第1行第0列附近的值无效。,NSJSONSerializationErrorIndex=0}))
相反,如果我把一个数字作为字符串,把Int.self作为解码类型,那么这个值就可以正确地打印出来。

let data = "100".data(using: .utf8)!

do {
    let decoder = JSONDecoder()
    let decoded = try decoder.decode(Int.self, from: data)
    print(decoded)
} catch {
    print(error)
}

100
为什么会这样?

olhwl3o2

olhwl3o21#

因为some string不是有效的json,但是"some string"是.你需要引号在你的字符串中:
let data = "\"Sample String\"".data(using: .utf8)!

相关问题