当前位置: 首页 > 面试题库 >

Objective-C中的JSON解析

茅和玉
2023-03-14
问题内容

我已经完成了有关iOS中JSON的Raywenderlich教程,但是我很难将其调整为适合自己的JSON文件。这是 我的JSON

{
    "Albumvideo":[
    {
        "titre": "Publicité",
        "photo":"blabla.jpg"
    },
    {
        "titre": "Events",
        "photo":"blabla.jpg"
    }
    ]
}

这是 我的代码

- (void) viewDidLoad
{
    [super viewDidLoad];
    dispatch_async (kBgQueue, ^{
         NSData* data = [NSData dataWithContentsOfURL:lienAlbumsVideo];
        [self performSelectorOnMainThread:@selector(fetchedData:)withObject:data waitUntilDone:YES];
    });
}

- (void)fetchedData:(NSData *)responseData {
     NSError* error;
     NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
     NSArray* albumsvideo = [json objectForKey:@"titre"];
     NSLog(@"Album: %@", albumsvideo);
}

日志返回null


问题答案:

你这样做是不对的。您已json正确将JSON数据填充到字典(名为)中。但你有一个Array of Dictionaries(被称为Albumvideo你的主要内部)Dictionary和价值的titre是内部Albumvideo数组。

正确的代码是:

NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
NSArray* albumsvideo = [json objectForKey:@"Albumvideo"];
NSString *titre1 = [[albumsvideo objectAtIndex:0]valueForKey:@"titre"];
NSString *titre2 = [[albumsvideo objectAtIndex:1]valueForKey:@"titre"];

了解概念。这取决于你的内心里有什么JSON。如果它是一个数组(在Values内部[ ]),则必须保存在其中NSArray;如果它是一个字典(在Values内部{ }),则另存为NSDictionary;如果您有单个值(如string,integer),则将double值保存,则必须使用适当的Objective-
C数据进行保存类型。

希望您对 JSON解析 有一些正确的想法。



 类似资料:
  • 问题内容: 我正在尝试存储从以下请求中获取的JSON中的JSON … 得到的JSON从获得 的身体 是下面的,正如你可以看到有是JSON内的JSON,我怎么能存储 的是 JSON在 NSDictionary中 ,你可以看到,JSON是引号之间。 问题答案: 实际上,您拥有的是:经典JSON,其中有一个字符串“代表” JSON。 因此,由于我们可以这样做: NSData <=> NSString N

  • 问题内容: 您能否告诉我如何传递如下所示的JSON字符串: 我这样尝试过: 提前致谢 最好的祝福 问题答案: 请注意,您的JSON数据具有以下结构: 顶级值是具有单个属性(称为“课程”)的对象(字典) “教训”属性是一个数组 “课程”数组中的每个元素都是一个具有几个属性的对象(包含课程的字典),其中包括“眩晕” 相应的代码是: 一些观察: 在中,参数是指向指针的指针。在这种情况下,通常使用代替。如

  • 问题内容: 据我所知,Objective-C,JSON Framework,YAJL和Touch JSON 有三个JSON解析器。然后,这三个将具有自己的特征。 例如: YAJL可以用作SAX样式解析器。 JSON框架的历史比较悠久,已被广泛使用。 触摸JSON解析NSData而不是NSString。 另外,据我测试,性能比较的结果如下: [快速] YAJL > JSON框架>触摸JSON [慢]

  • 本文向大家介绍Objective-C语言XML解析,包括了Objective-C语言XML解析的使用技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍简介Objective-C解析XML与JSON数据格式的方法,包括了简介Objective-C解析XML与JSON数据格式的方法的使用技巧和注意事项,需要的朋友参考一下 解析XML 本文以解析本地XML为例,网络获取到的返回值只需转换成NSData型,解析是同理 需要解析的xml文件如下,users.xml 我们用一个数组来存放,最终数据结构为 解析步骤 一、声明代理 NSXMLPa

  • 我正在接收用SJCL加密的数据到一个iOS应用程序中,在那里我需要解密它。另一端使用的是带有AES CCM模式的SJCL,而Apple的CommonCrypto不支持这一模式,因此我使用了VPCCMCrypt库。不可能对发送SJCL密码文本的另一方进行任何更改。 下面是我解密的方法: SJCL密钥生成: AES CCM解密: 最后一件缺失的事情是验证标记,我无法做到这一点。有什么想法吗?