我试图在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
为什么会这样?
1条答案
按热度按时间olhwl3o21#
因为
some string
不是有效的json,但是"some string"
是.你需要引号在你的字符串中:let data = "\"Sample String\"".data(using: .utf8)!