检查复杂JSON响应中的空键

时间:2012-07-15 03:35:12

标签: objective-c ios xcode json

我无法检查我的某个钥匙是否为空。

以下是我正在处理的已解析的JSON响应:

案例1(键'标签'不为空)

{
height = 480;
pid = "a@bsioihf93u420934";
tags =     (
            {
        attributes =             {
            mood =                 {
                confidence = 42;
                value = happy;
            };
            smiling =                 {
                confidence = 52;
                value = false;
            };
        };
        center =             {
            x = "49.86";
            y = "60.52";
        };
        confirmed = 0;
        width = "50.28";
    }
);
url = "http://abc/efg/hijk/lmnop.jpg";
width = 360;
}

有时候响应如下所示:

案例2(键'标签'为空)

{
height = 480;
pid = "a@bsioihf93u420934";
tags =     (
);
url = "http://abc/efg/hijk/lmnop.jpg";
width = 360;
}

当我在案例2中检查'tags'是否为空时,它返回false:

if ([photo objectForKey:@"tags"] == nil)

检查日志中[photo objectForKey:@"tags"]的实际值返回:

(
) 

我怎样才能检查'标签'是否为空?

2 个答案:

答案 0 :(得分:7)

尝试:

if ([[photo objectForKey:@"tags"] count] == 0)

答案 1 :(得分:0)

您究竟如何解析和存储JSON文本?看起来你可能正在将它存储到NSArray / NSDictionary(也许)?稍微澄清一下如何解析它以及存储它的数据结构会有所帮助。

假设您将它存储在NSArray / NSDictionary中,那么您当前正在检查“标签”是否为空的方式有什么问题?

如果

if ([photo objectForKey:@"tags"] == nil)

在第一种情况下返回false而在第二种情况下返回true,这意味着在第二种情况下,键“tag”的数据结构中没有值,这意味着“tags”字段为空。

这实际上似乎是最好和最实用的检查方法。