我正在编写一个代码来通过以下方式解析 json 响应:
NSDictionary* jsonArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
if (jsonArray == nil) {
// returns empty array
return layouts;
}
NSDictionary* sections = [jsonArray valueForKey:@"section"];
for (NSDictionary* section in sections) {
不幸的是,“部分”有时是空的,我最终得到的部分是一个 __NSArrayI * 其中包含一个元素 - NSNull * 。这会导致 for 循环失败并出现异常。我该如何解决?
最佳答案
我曾经在 NSDictionary 扩展上有一个清理方法来帮助我解决这个问题。基本上,该方法遍历字典中的所有键并删除与 NSNull() 匹配的任何值,返回一个“干净”的字典和数组。诀窍在于您还必须通过嵌套字典进行递归。所以,在伪代码中,它看起来像这样:
func cleanup() -> NSDictionary {
let newDictionary = NSDictionary()
for key in dictionary.copy {
if dictionary[key] is NSDictionary {
newDictionary[key] = dictionary[key].cleanup()
} else if dictionary[key] is NSArray {
newDictionary[key] = dictionary[key].filter( $0 != NSNull() )
} else if dictionary[key] != NSNull() {
newDictionary[key] = dictionary[key]
}
return newDictionary
}
希望这对您有所帮助!
关于ios - 包含 NSNull* 的 NSDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35463496/