无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用
Posted
技术标签:
【中文标题】无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用【英文标题】:Unable to write JSONValue into NSDictionary - JSON Framework not working 【发布时间】:2014-02-18 07:13:17 【问题描述】:我正在使用 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
是空的?有什么建议吗?
【问题讨论】:
请检查您是否使用 if([jsonString JSONValue]isKindOfClass:[NSDictionary Class]) 从服务器获取字典 我正在从服务器获取 NSString 并为其他克隆获取相同的字符串。仍然在那里工作正常。 【参考方案1】:[jsonString JSONValue];
在您的项目中设置目标依赖项,点击此链接
Parsing json in an ios app
JSONValue 是来自 SBJson 的第三方库。 Apple 有内置框架用于转换 json 使用这种方法
使用这个
NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
【讨论】:
【参考方案2】:试试这个代码:
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;
【讨论】:
以上是关于无法将 JSONValue 写入 NSDictionary - JSON 框架不起作用的主要内容,如果未能解决你的问题,请参考以下文章