3

NSData 形式で次の応答を返す PHP サービスがあります。以下を使用して同じものを 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 Dictionary に変換します。

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 ループ内に入ることはありません。

私はしばらくこれを理解しようとしてきましたが、できません。助けてください

4

2 に答える 2

3

あなたのjsonオブジェクトは、NSArray代わりに試してみる配列ですNSDictionary

于 2013-06-10T17:11:25.957 に答える
0

返される JSON は辞書ではなく配列であるためです。試す:

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