无法将JSONValue写入NSDictionary - JSON Framework无法正常工作

时间:2014-02-18 07:13:17

标签: ios objective-c json nsdictionary

我正在使用JSON接收响应,然后尝试将其保存在NSDictionary中。我在相同应用程序的近12个克隆中使用相同的代码,并且它的工作性能很好。但是,在我的一个应用程序中,我无法做到这一点。

    NSDictionary *resultsDictionary = [jsonString JSONValue];
    NSString *statusString = [resultsDictionary objectForKey:@"status"];

这是一个简单的两行代码并且工作正常,但我不知道这次会发生什么。可能是我的JSON框架无法正常工作。但我在JSONValue

中得到了这个
{
"status": "Success",
"data": [
    {
        "userName": "abc@gmail.com",
        "first_name": "ABC",
        "last_name": "XYZ",
        "gender": "male",
        "userid": 1,
        "membershipStatus": "Active",
        "Saldo": 499.749,
        "Avatar": "no_photo.gif",
        "uniqueCode": "abc234abc234",
        "registerKey": "abc543abc534",
        "eMail": "abc@gmail.com"
    }
]

}

但是,当我执行它时,我收到了这个错误:

[__NSCFConstantString objectForKey:]: unrecognized selector sent to instance

因为resultDictionay为空。

为什么resultDictionay为空?有什么建议吗?

2 个答案:

答案 0 :(得分:2)

[jsonString JSONValue];

在项目中设置目标依赖项,请点击此链接

Parsing json in an iOS app

JSONValue是来自SBJson的thridParty图书馆。 Apple有内置的转换框json使用这种方法

使用此

NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

答案 1 :(得分:0)

试试这段代码:

NSURLResponse *response;
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
strResponse = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

NSLog(@"returnString : %@",strResponse);


NSData *responseData = [strResponse dataUsingEncoding:NSUTF8StringEncoding];

id jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&jsonError];

if ([jsonObject isKindOfClass:[NSDictionary class]]) {
    tempDict = (NSDictionary *)jsonObject;
}