【问题标题】:Check JSON has an object NSArray检查 JSON 是否有对象 NSArray
【发布时间】:2015-11-10 18:28:08
【问题描述】:

JSON 服务响应有点问题。该服务以两种不同的方式响应。也就是说,它会向您抛出另一种 json 格式,而不是产生错误或有意义的响应。现在大多数时候这没关系,但是有时Objective C只是放弃了,因为它没有处理新结构(即我正在尝试对其进行编程以进行处理)。

我有一个基本的 JSON 调用和返回(摘要)。

NSArray *jsonArray = [[NSJSONSerialization JSONObjectWithData: data options: NSJSONReadingMutableContainers error: &e] mutableCopy];

当我调用提供详细信息的服务时,我得到以下格式(无错误)

Printing description of jsonArray:
{
    YBBN =     {
        charts =         (
                        {
                id = "5f0ec74a-6e7c-5484-aef2-5929b85d9739";
                type = General;
            },

当我调用没有数据的同一个服务时,它会提供以下结构,从而导致崩溃。

Printing description of jsonArray:
{
    NZAA = 0;
}

我只是想检查返回的 JSON,如果 charts 节点存在,如果它确实继续(这些不是您要寻找的机器人),否则抛出错误并处理异常并停止崩溃在用户身上。

我尝试了不同的技术,但每种技术似乎要么完全跳过“检查”,要么完全失败。

我已经回到了绘图板上,当然有一种简单的方法可以实现一个简单的 if 语句来检查。我错过了什么?

提前致谢!

【问题讨论】:

    标签: json nsarray nsdictionary


    【解决方案1】:

    好的,我在此讨论的帮助下找到了问题。 How to check if an NSDictionary or NSMutableDictionary contains a key?

    不知道我以前是怎么发现的,但我能够测试它的建议并且结果有效。

    为了完成,我最终得到了以下代码,希望这可能对其他人有所帮助。

    NSDictionary *newArray = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
                           NSString *_icaoCode = airportICAOCode.text;
    
    
                            if ([[newArray allKeys] containsObject:_icaoCode]) {
                                NSLog(@"Contains key");
                            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-22
      • 2023-03-12
      • 1970-01-01
      相关资源
      最近更新 更多