
我必须使用xcode解析以下JsON数据.当我在浏览器中点击相同的URL时,这就是要解析的数据:
{"RESPONSE":[ {"ID":"20","username":"john","email":"abc@gmail.com","phone":"1234567890","location":"31.000,71.000"}],"STATUS":"OK","MESSAGE":"Here will be message"} 我达到此JsON数据的代码如下:
NSData *data = [NSData dataWithContentsOfURL:finalurl];NSError *error;NSDictionary *Json = [NSJsONSerialization JsONObjectWithData:data options:kNilOptions error:&error];
如果我使用NSLog打印对象Json,即NSLog(@“Json:%@”,[Json description]);看起来像:
Json: { MESSAGE = "Here will be message"; RESPONSE =( { email = "abc@gmail.com"; ID = 20; location = "31.000,71.000"; phone = 1234567890; username = john; } ); STATUS = OK;} 所以,在这里我发现了两件事:
>与上面的Web响应相比,更改了键(或节点)的顺序(MESSAGE,RESPONSE和STATUS).
> RESPONSE被括在'(‘&’)’括号中.
现在,如果我将键的值分开MESSAGE& STATUS和NsLog它们,然后它们被打印为正确的字符串.
和msgStr一样:这里将是message&状态:OK
但是如果我将RESPONSE的值作为字典分离并再次将该字典的子值分离为电子邮件和用户名,那么我就无法将其作为字符串.
这是我写的代码到目前为止:
NSMutableDictionary *response = [Json valueForKey:@"RESPONSE"];Nsstring *username = [response valueForKey:@"username"];Nsstring *emailID = [response valueForKey:@"email"];
如果我打印用户名和emailID,那么它们不会被打印为普通字符串,而是输出为:
username:( john)email:( abc@gmail.com)
所以我的问题是为什么它不是正常的字符串?如果我尝试进一步使用这些变量,那么它们会显示在'(‘&’)’括号内的值.这是因为NSJsONSerialization发生的吗?
解决方法 首先在您的JsON响应字典中,在“RESPONSE”键下,您有一个数组而不是字典,该数组包含字典对象.所以要提取用户名和电子邮件ID,如下所示
NSMutableDictionary *response = [[[Json valueForKey:@"RESPONSE"] objectAtIndex:0]mutablecopy]; Nsstring *username = [response valueForKey:@"username"]; Nsstring *emailID = [response valueForKey:@"email"];总结
以上是内存溢出为你收集整理的在iOS中使用NSJSONSerialization进行JSON解析全部内容,希望文章能够帮你解决在iOS中使用NSJSONSerialization进行JSON解析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)