我试图在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)
}
dataCorrupted (Swift.DecodingError。Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError:可选(Error Domain=NSCocoaErrorDomain Code=3840 "第1行第0列周围的无效值;"UserInfo={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年为什么会这样?
因为some string
不是有效的json,但"some string"
是。字符串中需要引号:
let data = ""Sample String"".data(using: .utf8)!