我正在使用TouchJSON
框架反序列化一些JSON。来自解析的词典数组用于填充UITableView
。
我解析的JSON中的某些值有可能为空。如果我将其NSLog
送到控制台,则结果如下所示:
id = 1234;
title = "Hello, World";
description = "<null>";
detail = "The world says hello";
从服务器检索时,描述值是一个空字符串。
因此,TouchJSON可以识别描述值是字符串类型,但是服务器的初衷是要传达这是一个空字符串,例如
description = @"";
如果以后再尝试将description的值设置为
UILabels
文本属性,则应用程序将崩溃。所以我的问题是,JSON中同时包含NSNumbers和NSStrings,是否应该遍历TouchJSON的反序列化方法的结果并测试所有值,我将如何做?
我无法模拟如果NSNumber值为空会发生什么,我将如何测试呢?在这种情况下,NSNumber值将为nil而不是“ null”吗?
最佳答案
我在使用SBJSON库,遇到了同样的问题。我的解决方案也适用于您的情况:我更改了库,以便它处理缺失的值,在返回的集合中将它们设置为+[NSNull null]
。这使您的客户端代码有些谨慎,因为您必须处理可能得到NSNull
而不是NSString
的情况。但这只是疣的一个更明显的版本,您必须确定@""
是指空字符串还是未设置的值。