Pitaya
Pitaya copied to clipboard
JSONND null 值问题,不知如何 解决
let j = JSONND(string: "{\"x\":null}") print(j ) if let x = j["x"].RAW { print(x) }
这样无法正常执行下去,到if let 语句就崩溃了,不知如何解决
null 不会崩,空字符串就更不会崩了,你的问题出在这里:
let j = JSONND(string: "{"x":null}")
这一行代码根本就无法编译通过,因为语法错误。确实,Swift 中只能使用双引号表示字符串,而恰好 JSON 格式也只能使用双引号来表示 key 以及字符串类型的 value,所以这行代码应该这么写:
let j = JSONND(string: "{\"x\":null}")
我是加了转义符的,只是copy进来时不显示了.
在 if let 处报崩溃了.
**
let j = JSONND(string: "{\"x\":null}")
print(j )
if let x = j["x"].RAW {
print(x)
}
** 在if let 处崩溃,代码停留在 JSONND.swift 82行
控制台输出
JSONND(data: {
x = "
我搜了一下 Invalid top-level type in JSON write
这个错误,发现是在生成 JSON 字符串的时候抛出的,就是 .RAW 的时候。
用这个方法试试吧,直接将子对象使用 JSONND 对象初始化:
class TestModel: JSONNDModel {
var hey: Hey!
required init(JSONNDObject json: JSONND) {
super.init(JSONNDObject: json)
self.hey = Hey(JSONNDObject: json["hey"])
}
}
class Hey: JSONNDModel {
var oo = "xx"
}
`
super.init(JSONNDObject: json)
self.hey = Hey(JSONNDObject: json["hey"])
` 这两句都会成功执行,所以并不能获得一个nil的对象,仍然无法解决问题