IOS - 尝试从json获取价值

时间:2014-04-08 07:57:00

标签: ios objective-c json

我无法理解为什么我没有从json中获取值。

  

{ “USER_ID”: “150”, “USER_NAME”: “实施例”, “user_lastname”: “实施例”}

我使用此代码:

  NSData* data = [string dataUsingEncoding:NSUTF8StringEncoding];

NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

for (NSMutableDictionary *dictionary in array)
{

    if([dictionary isEqual:@"user_id"]){

    self.userId = [dictionary valueForKey:@"user_id"];  
    }

感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

  NSData* data = [string dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];


    self.userId = [dictionary valueForKey:@"user_id"];  

试试这个。您的JSON表示已经说它是字典(即{}代表字典)

答案 1 :(得分:2)

通过这样做:

if([dictionary isEqual:@"user_id"])

您正在将nsdictionary与nsstring进行比较,因此它将始终返回false。如果你显示的json是完整的json字符串,那么它首先是一个nsdictionary,你不需要循环。

请改为尝试:

NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

NSString *user_id =  [dictionary valueForKey:@"user_id"]
if(user_id){
    self.userId = user_id;  
}

答案 2 :(得分:1)

你的if条件错误到for循环的问题是JSON字典到数组然后你的代码是正确的只需要改变条件如果如果只有一个数据到你的{{1}您可以直接获取字典并设置字符串的直接JSON: -

keyvalue

答案 3 :(得分:1)

您显示的JSON是字典,而不是字典数组。所以你的代码循环遍历字典键。

如果有疑问,请记录从NSJSONSerialization获得的对象的类以进行验证。

你也应该检查&记录反序列化返回的任何错误。你应该考虑尝试将字典与字符串进行比较的逻辑。