国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ios中使用SBJson拼接和解析json

2019-11-14 19:53:02
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1.ios解析json
使用開源json包,項(xiàng)目地址:
     http://stig.github.com/json-framework/
NSData * responseData = [respones responseData];
      
     NSString * strResponser = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
SBJsonParser * parser = [[SBJsonParser alloc]init];
     NSMutableDictionary *dicMessageInfo = [parser objectWithString:strResponser]; // 解析成json解析對(duì)象
[parser release];
     //發(fā)送者
     NSString * sender = [dicMessageInfo objectForKey:@"sender"];

2.json嵌套對(duì)象解析:
//要上傳的字符串
    NSString *dataStr=[[NSString alloc] initWithString:@"{/"cross/":{/"1/":/"true/",/"2/":/"false/",/"3/":/"true/"}}"];
//獲取響應(yīng)返回字符串
NSData * responseData = [respones responseData];
        
        NSString * strResponser = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
//嵌套解析
SBJsonParser * parser = [[SBJsonParser alloc]init];
            
            NSMutableDictionary *dicMessageInfo = [parser objectWithString:strResponser]; // 解析成json解析對(duì)象
            
            NSMutableDictionary * cross = [dicMessageInfo objectForKey:@"cross"];
            
            NSString *cross1= [cross objectForKey:@"1"];
            //解析json到各個(gè)字符串
            //發(fā)送者
            [parser release];
            NSLog(@"cross1: %@",cross1);
3.拼接json字符串

通過(guò)使用SBJson中的SBJsonWriter類的方法- (NSString*)stringWithObject:(id)value可以將一個(gè)對(duì)象中的值格式化為json字符串,符合key/value格式的數(shù)據(jù)封裝到NSDictionary后可以使用該方法進(jìn)行格式化,其他數(shù)據(jù)通過(guò)拼接字符串的方式格式化。
在拼接過(guò)程中可以使用類NSMutableString的方法:
- (void)appendString:(NSString *)aString;、
- (void)appendFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);
動(dòng)態(tài)添加字符串。
拼接的字符串可通過(guò)json在線驗(yàn)證的方式驗(yàn)證其格式是否正確,網(wǎng)址為:
http://jsonlint.com/
-(NSString *) getJsonString
{
    NSMutableString *json = [NSMutableString stringWithCapacity:128];
    NSString *jsonString=nil;
    SBJsonWriter *writer = [[SBJsonWriter alloc] init];
    [json appendString:@"{/"data/":{"];
    [json appendFormat:@"/"%@/":/"%d/",",@"reset",reset];
    if(missionStatus!=NULL)
    {
        jsonString=[writer stringWithObject:status];
        if(jsonString!=NULL)
        {
            [json appendString:@"/"status/":"];
            [json appendString:jsonString];
        }
    }
    [json appendString:@"}}"];
    return json;
}
4.利用多個(gè)NSDictionary,拼接多層嵌套的json字符串,減少因手工拼接忘記加引號(hào)導(dǎo)致的json格式錯(cuò)誤
示例代碼:
NSDictionary *dataDictionary= [NSDictionary dictionaryWithObjectsAndKeys:mac,@"mac",
                                   game,@"game",
                                   devicetoken,@"devicetoken",
                                   device,@"device",
                                   gv,@"gv",
                                   lang,@"lang",
                                   os,@"os",
                                   hardware,@"hardware",
                                   down,@"down",nil];
    NSDictionary *parmDictionary= [NSDictionary dictionaryWithObjectsAndKeys:@"getsession",@"act",
                                   dataDictionary,@"data",nil];
    NSDictionary *jsonDictionary=[NSDictionary dictionaryWithObjectsAndKeys:pv,@"pv",
                                  parmDictionary,@"param",nil];
    SBJsonWriter *writer = [[SBJsonWriter alloc] init];
    
    NSString *jsonString=nil;
    jsonString=[writer stringWithObject:jsonDictionary];
    NSLog(@"%@",jsonString);
5.json字符串在線校驗(yàn)網(wǎng)址:
http://jsonlint.com/


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西乌| 泸水县| 漳州市| 宁强县| 兴宁市| 广平县| 宝兴县| 平顺县| 临漳县| 涞水县| 大竹县| 宜良县| 靖西县| 江安县| 砀山县| 阳原县| 喀什市| 贵德县| 慈利县| 鸡泽县| 田林县| 云南省| 汉阴县| 屏南县| 禄劝| 仪陇县| 万荣县| 淄博市| 黎川县| 边坝县| 得荣县| 蓬安县| 开封县| 卢湾区| 买车| 祁阳县| 大关县| 江口县| 尚义县| 竹北市| 融水|