Cocoa-Touch-如何解析本地Json文件

Cocoa-Touch-如何解析本地Json文件,第1张

Cocoa-Touch-如何解析本地Json文件

JSON具有严格的键/值表示法,用于R4和响应的键/值对不正确。试试这个:

NSString *jsonString = @"{"quizz":[{"id":"1","Q1":"When Mickey was born","R1":"1920","R2":"1965","R3":"1923","R4":"1234","response":"1920"}]}";

如果您从文件中读取字符串,则不需要所有的斜杠。
文件将如下所示:

{“ quizz”:[{“ id”:“ 1”,“ Q1”:“米奇出生时”,“ R1”:“ 1920”,“ R2”:“ 1965”,“ R3”:“
1923”, “ R4”:“ 1234”,“响应”:“ 1920”},{“ id”:“ 1”,“ Q1”:“冷战开始时”,“ R1”:“ 1920”,“
R2”: “ 1965”,“ R3”:“ 1923”,“ R4”:“ 1234”,“响应”:“ 1920”}]}


我用以下代码进行了测试:

NSString *jsonString = @"{"quizz":[{"id":"1","Q1":"When Mickey was born","R1":"1920","R2":"1965","R3":"1923","R4":"1234","response":"1920"}, {"id":"1","Q1":"When start the cold war","R1":"1920","R2":"1965","R3":"1923","R4":"1234","reponse":"1920"}]}";NSLog(@"%@", jsonString);NSError *error =  nil;NSDictionary *json = [NSJSonSerialization JSONObjectWithdata:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error];NSArray *items = [json valueForKeyPath:@"quizz"];NSEnumerator *enumerator = [items objectEnumerator];NSDictionary* item;while (item = (NSDictionary*)[enumerator nextObject]) {    NSLog(@"clientId = %@",  [item objectForKey:@"id"]);    NSLog(@"clientName = %@",[item objectForKey:@"Q1"]);    NSLog(@"job = %@",       [item objectForKey:@"Q2"]);}

我的印象是,您复制了旧代码,因为您没有使用Apple的序列化和Enumerator而不是Fast
Enumeration。整个枚举内容可以写为

NSArray *items = [json valueForKeyPath:@"quizz"];for (NSDictionary *item in items) {    NSLog(@"clientId = %@",  [item objectForKey:@"id"]);    NSLog(@"clientName = %@",[item objectForKey:@"Q1"]);    NSLog(@"job = %@",       [item objectForKey:@"Q2"]);}

甚至是基于块的枚举的爱好者,如果需要快速安全的枚举,还需要另外一个索引。

NSArray *items = [json valueForKeyPath:@"quizz"];[items enumerateObjectsUsingBlock:^(NSDictionary *item , NSUInteger idx, BOOL *stop) {    NSLog(@"clientId = %@",  [item objectForKey:@"id"]);    NSLog(@"clientName = %@",[item objectForKey:@"Q1"]);    NSLog(@"job = %@",       [item objectForKey:@"Q2"]);}];


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/4955188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存