将 JSON 数据从 NSData 转换为 NSDictionary
Posted
技术标签:
【中文标题】将 JSON 数据从 NSData 转换为 NSDictionary【英文标题】:Converting JSON Data from NSData to NSDictionary 【发布时间】:2013-06-10 17:07:31 【问题描述】:我有一个 php 服务,它以 NSData 格式返回以下响应。使用以下方法将其转换为 NSString 后:
NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
我得到以下信息:
[
"Emp_Name": "Krishna Mamidi",
"Emp_Designation": "Driver",
"Emp_Type": "Permanent",
"Joining_Date": "05-MAR-2011",
"Salary": 10000
,
"Emp_Name": "Aditya Reddy",
"Emp_Designation": "supervisor",
"Emp_Type": "Permanent",
"Joining_Date": "06-MAR-2011",
"Salary": 9000
,
"Emp_Name": "Rajiv krishna",
"Emp_Designation": "director",
"Emp_Type": "Permanent",
"Joining_Date": "01-MAR-2011",
"Salary": 100000
]
以上是正确的 JSON 格式。
收到上面的NSData格式后,我用下面的把它转换成JSON字典:
NSError *error = nil;
id jsonObject = [NSJSONSerialization
JSONObjectWithData:data
options:NSJSONWritingPrettyPrinted error:&error];
NSDictionary *deserializedDictionary = nil;
if (jsonObject != nil && error == nil)
if ([jsonObject isKindOfClass:[NSDictionary class]])
//Convert the NSData to NSDictionary in this final step
deserializedDictionary = (NSDictionary *)jsonObject;
但是,“反序列化字典”始终为 null 或为空。基本上它从来没有出现在上面的 If 循环中。
我一直在尝试解决这个问题,但无法解决。请帮忙
【问题讨论】:
字典数组... 【参考方案1】:您的 json 对象是一个数组,尝试使用 NSArray
而不是 NSDictionary
。
【讨论】:
不敢相信这是一个如此简单的答案。感谢您的帮助:-)【参考方案2】:因为返回的 JSON 是一个数组,而不是字典。试试:
NSLog(@"%@", NSStringFromClass([jsonObject class]));
【讨论】:
是的,使用数组而不是字典并解决了这个问题。感谢您的帮助以上是关于将 JSON 数据从 NSData 转换为 NSDictionary的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串转换为 NSData 以将其传递给 BLE 设备?
我将一些数据发送到 web 服务,它返回一些 JSON 作为 NSData。如何转换为字典?(iOS 4.3)