将JSONValue中的NSDictionary数据解析为字符串

时间:2013-05-29 07:56:09

标签: ios json nsurlconnection

我刚刚获取数据但是当我尝试将其附加到NSData的字符串时,编译器会发生异常错误。 我的代码看起来像这样:

NSDictionary *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil];
NSString *jSonStatus = [allDAtaDictionary objectForKey:@"status"];
if([jSonStatus isEqualToString:@"OK"])
{
   NSDictionary *results = [allDAtaDictionary objectForKey:@"user_details"];
   NSLog(@"User Details :  %@",results);

所有事情都有效,直到这些行开始:

NSString *userID = [results objectForKey:@"userID"];

错误输出为:

  

* 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSCFArray objectForKey:]:   无法识别的选择器发送到实例0x9485a00'

这是我的jSOn输出,NSLog(@“用户详细信息:%@”,结果);

User Details :  (
        {
        userCity = California;
        userCountry = "United States";
        userDOB = "1988-03-02";
        userDetails = "";
        userEmail = "xxx@xxx.com";
        userFBID = 715296184;
        userFullName = "John Mc Grager";
        userGender = Male;
        userID = 70;
        userLastLoginTime = "2013-05-29 10:51:27";
        userLatitude = "37.7858";
        userLongtitude = "-122.406";
        userNickName = warblader;
        userPassword = "";
        userStatus = 1;
        userToken = "";
    }
)

3 个答案:

答案 0 :(得分:3)

似乎JSON是一个包含一个字典的数组。你至少在这里向我们展示了什么。

所以

NSArray *results = [allDAtaDictionary objectForKey:@"user_details"];
NSLog(@"User Details :  %@",results);

assert(results.count>0);
NSDictionary *user = [results objectAtIndex:0];

NSString *userID = [results objectForKey:@"userID"];
NSLog(@"%@", userID);

答案 1 :(得分:1)

首先,您需要将序列化数据保存到数组中..然后您必须相应地使用它...在这种情况下

NSArray *allDAtaDictionary = [NSJSONSerialization JSONObjectWithData:_webData options:0 error:nil];

在索引0中记录数组,看看你得到了什么。在此之后,您可以开始解析数据。

由于此原因发生了异常。在这里检查我的答案以解析JSON How to parse JSON with multiple instance in Object C

答案 2 :(得分:0)

您的回复可能包含一个数组,其中结果字典正在保留,因此您需要使用ObjectAtIndex而不是调用objectForKey