2012-06-30 133 views
1

這是來自服務器的JSON:ios解析包含數組的json?

{ 
    "name":"channelname", 
    "args": 
    [ 
     {   
      "username":"myusername", 
      "message":"mymessage" 
     } 
    ] 
} 

使用的iOS5內置JSON方法我嘗試解析出ARGS的用戶名/消息。

NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: [packet.data dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableContainers error: nil]; 
NSDictionary *argsValues = [[NSDictionary alloc] initWithDictionary:[JSON objectForKey:@"args"]]; 

第二行拋出一個錯誤:

dictionary argument is not an NSDictionary 

當我的NSLog [JSON objectForKey @ 「ARGS」]我得到:

(
    { 
     message = mymessage; 
     username = myusername; 
    } 
) 

我認爲括號中打破它,不要不知道他們從哪裏來,幫助表示讚賞。

編輯:

由於選擇的答案,這裏是我用來獲取ARGS鍵的代碼。

NSDictionary *JSON = [NSJSONSerialization JSONObjectWithData: [packet.data dataUsingEncoding:NSUTF8StringEncoding] options: NSJSONReadingMutableLeaves error: nil]; 
NSArray *argsArray = [[NSArray alloc] initWithArray:[JSON objectForKey:@"args"]]; 
NSDictionary *argsDict = [[NSDictionary alloc] initWithDictionary:[argsArray objectAtIndex:0]]; 
NSLog(@"keys = %@", [argsDict allKeys]); 

回答

2
[json objectForKey:@"args"] 

是一個NSArray。您無法直接使用數組初始化NSDictionary。

(在JSON,{和}表示鍵值對,喜歡的NSDictionary,而[和]劃有序像NSArray的列表,這就是爲什麼映射完成,因爲它是...)