iOS json解析之SBJson

本文介绍如何在iOS应用中使用第三方库SBJson解析JSON文件。通过一个具体的例子展示了从读取JSON文件到解析其中复杂结构的过程,并成功提取出关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON是现在比较流行的文档格式,与xml比,JSON很轻巧。ios sdk中没有JSON的解析库,第三方库SBJson是用的比较多的。

解析下面的JSON数据

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}
我把它放在了左面上的glossary。json文件中

读取并解析这个文档

 NSMutableString *fileName = [NSMutableString stringWithFormat:@"%@%@%@",NSHomeDirectory(),
                                      @"/desktop",@"/glossary.json"];
        NSLog(@"%@",fileName);
        NSString *jsonStr = [NSString stringWithContentsOfFile:fileName encoding:NSUTF8StringEncoding error:nil];
        NSLog(@"%@",jsonStr);
        
        SBJsonParser *parser = [[SBJsonParser alloc]init];
        NSDictionary *json = [parser objectWithString:jsonStr];
        
        NSDictionary *glossary = [json objectForKey:@"glossary"];
        NSString *glossaryTitle = [glossary objectForKey:@"title"];
        
        NSDictionary *glossDiv = [glossary objectForKey:@"GlossDiv"];
        NSString *glossDivTitle = [glossDiv objectForKey:@"title"];
        
        NSArray *glossSeeAlso = [[[[glossDiv objectForKey:@"GlossList"]
                                   objectForKey:@"GlossEntry"]
                                  objectForKey:@"GlossDef"]
                                 objectForKey:@"GlossSeeAlso"];
        NSString *SortAs = [[[glossDiv objectForKey:@"GlossList"]
                              objectForKey:@"GlossEntry"]
                             objectForKey:@"GlossTerm"];
        NSLog(@"%@",SortAs);
        NSLog(@"Glossary Title : %@",glossaryTitle);
        NSLog(@"GlossDic Title : %@",glossDivTitle);
        NSLog(@"GlossSeeAlso item 1 : %@",[glossSeeAlso objectAtIndex:0]);
        NSLog(@"GlossSeeAlso item 2 : %@",[glossSeeAlso objectAtIndex:1]);
                

第 2 行是將檔案內容放到 NSString 內。
第 5 行創造一個 JSON Parser,準備將 JSON 字串轉換成 Object
第 6 行將 JSON 字串轉換成 NSDictionary,而這一個 NSDictionary 內的 Object 亦已經被 JSON Parser 轉換成相對應的 Object,例如: NSArrayNSDictionaryNSString 等等。
第 8 行是使用關鍵字 "glossary" 抽取 Object,因為這個 Object 是包含以下部份的資料:

输出结果:

2012-08-29 16:52:13.311 xml[3311:707] Standard Generalized Markup Language
2012-08-29 16:52:13.311 xml[3311:707] Glossary Title : example glossary
2012-08-29 16:52:13.312 xml[3311:707] GlossDic Title : S
2012-08-29 16:52:13.312 xml[3311:707] GlossSeeAlso item 1 : GML
2012-08-29 16:52:13.313 xml[3311:707] GlossSeeAlso item 2 : XML


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值