在解码单个值时对JSONDecoder的澄清



我试图在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)!

相关内容

  • 没有找到相关文章

最新更新