ios中将nsdata类型的数据放到字典里,在封装成json可以吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios中将nsdata类型的数据放到字典里,在封装成json可以吗相关的知识,希望对你有一定的参考价值。
参考技术A 首先需要确定你的json解析出来的是什么类型的,下面提供的是NSData型的,如果解析出来是其他类型需要先转为NSData: NSData *data; NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];本回答被提问者采纳我将一些数据发送到 web 服务,它返回一些 JSON 作为 NSData。如何转换为字典?(iOS 4.3)
【中文标题】我将一些数据发送到 web 服务,它返回一些 JSON 作为 NSData。如何转换为字典?(iOS 4.3)【英文标题】:I send some data to a webservice, it returns some JSON as NSData. How to convert to Dict?(iOS 4.3) 【发布时间】:2012-07-05 07:44:25 【问题描述】:我将一些凭据发送到网络服务。
我可以得到 NSData 或 NSString 的响应。
将(NSData 或 NSString)JSON 转换为 NSDictionary 以便我处理它的最简单方法是什么?
为 iOS4.3 构建 非常感谢, -代码
【问题讨论】:
第一次复制:NSData
到 NSString
=> Here。 第二次复制:“JSON”到NSDictionary
=> Here。
【参考方案1】:
从 iOS 5.0 起,您可以使用NSJSONSerialization
,文档here。
有一个很好的使用教程,here。
【讨论】:
【参考方案2】:使用链接下载 SBJsonParser 框架,http://github.com/stig/json-framework/downloads 并将所需的类添加到您的项目 (SBJsonParser.h)。
导入 SBJsonParser.h 并使用以下代码,
SBJsonParser *parser = [[SBJsonParser alloc] init];
//dictionary with name,id
NSDictionary *jsonObject = [parser objectWithString:jsonString error:NULL];
//name array
NSMutableArray *nameArray = [[NSMutableArray alloc]init];
for (NSMutableDictionary *dic in jsonObject)
[nameArray addObject:[dic valueForKey:@"name"]];
【讨论】:
【参考方案3】:使用这个:
NSString *urlString = [NSString stringWithFormat:kURLString,self.chapter,self.page];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[urlString dataUsingEncoding:NSISOLatin1StringEncoding]];
NSData* responseData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:nil error:nil];
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSISOLatin1StringEncoding];
NSDictionary* result = [(NSDictionary*)[responseString JSONValue] objectForKey:@"Result"];
【讨论】:
JSONValue 方法来自什么库? 您必须在项目中添加 JSON 类,为此从 gitHub 下载它,然后在您要解析数据的所需类中 #import "JSON.h"。【参考方案4】:我用的是 SBJson
NSArray *arrObj = (NSArray*)[[JsonParser sharedJsonParser] getObjectsFromJsonString:responseString];
这里的响应字符串是一个JSON字符串
【讨论】:
以上是关于ios中将nsdata类型的数据放到字典里,在封装成json可以吗的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS 中将 NSData 变量转换为 NSInteger 变量