我正在使用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的情况。但这只是疣的一个更明显的版本,您必须确定@""是指空字符串还是未设置的值。

09-25 21:51