【问题标题】:Checking an empty key in a complex JSON response检查复杂 JSON 响应中的空键
【发布时间】:2012-07-15 03:35:11
【问题描述】:

我无法检查我的其中一个键是否为空。

以下是我正在使用的解析后的 JSON 响应:

案例 1(键 'tags' 不为空)

{
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"]的实际值返回:

(
) 

我还能如何检查“标签”是否为空?

【问题讨论】:

  • 你从哪里得到这个 JSON,你用什么来解析它?您发布的是实际的 JSON 字符串吗?因为如果是这样,它不是有效的 JSON,如果不是,那么我不知道它是什么。

标签: objective-c ios xcode json


【解决方案1】:

试试:

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

【讨论】:

  • 工作就像一个魅力。谢谢!
  • 美丽。我希望我早点找到这个!这对我有用: if ([[myDictionary valueForKey:@"my_value"]count] == 0) { NSLog(@"I am empty!"); objectForKey 似乎不适用于空对象,但 valueForKey 返回字段中的任何内容,即使它为空。
【解决方案2】:

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

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

如果

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

情况一返回false,情况二返回true,表示情况二中键“tags”的数据结构中没有值,表示“tags”字段为空。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 2019-01-23
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多