将JSON数据从NSData转换为NSDictionary

时间:2013-06-10 17:07:31

标签: iphone ios xcode json ipad

我有一个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;
    }
}

但是“deserializedDictionary”始终为null或空。基本上它从未进入上面的If循环。

我一直试图弄清楚这一点,但我无法做到。请帮忙

2 个答案:

答案 0 :(得分:3)

您的json对象是使用NSArray而不是NSDictionary的数组尝试。

答案 1 :(得分:0)

因为返回的JSON是数组,而不是字典。尝试:

NSLog(@"%@", NSStringFromClass([jsonObject class]));