3

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

但是“反序列化字典”始终为空或为空。基本上它从来没有出现在上面的 If 循环中。

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

4

2 回答 2

3

您的 json 对象是一个数组,尝试使用NSArray而不是NSDictionary.

于 2013-06-10T17:11:25.957 回答
0

Because the JSON returned is an array, not a dictionary. Try:

NSLog(@"%@", NSStringFromClass([jsonObject class]));
于 2013-06-10T17:11:21.720 回答