2012-03-18 7 views
1

objective-C에서이 JSON 객체를 구문 분석하고 이러한 객체를 사용하여 NSArray를 생성하려고합니다. 첫 번째 값은 카운터이며 개체에 따라 다릅니다. 다른 모든 값은 고유합니다. NSArray로 JSON 객체 가져 오기

{ "myData": [ 
["1","1","110","dollar","8.0","2.8","0.1","11.6"], 
["2","1","110","euro","4.0","3.2","1.5","4.4"], 
["3","1","120","rupier","6.0","2.9","1.3","10.8"], 
["4","1","120","dinero","4.0","3.3","1.5","4.4"], 
["5","2","130","drahmer","8.0","2.9","1.3","11.2"], 
] } 

이 코드를 시도 :

NSDictionary* json = [NSJSONSerialization 
          JSONObjectWithData:myData 
          options:kNilOptions 
          error:&error]; 

    NSArray *currencyInformation = [json objectForKey:@"myData"]; 

그러나 개체가 없습니다. 배열의 카운트가이 데이터 구조에서 5

+3

[배열 수있는 경우 ]가 예상대로 5 일 때, 개체가 * 있습니다. 당신은 어떻게 그들이 아님을 압니까? –

+0

배열에서 읽을 수 없습니다. 그들은 값에 대한 설명이 없기 때문에. "통화": "달러"나는 그들을 밖으로 준비 할 수 없습니다 ... – linge

+0

'통화'는 어디에 있습니까? 나는 JSON에서 그것을 전혀 볼 수 없다. 배열의 값에 액세스하는 방법을 보여주세요. (힌트 : 그들은 NSArray 자신들이 될 것이다.) – mattjgalloway

답변

1

을 비록 당신이 키에 의해 일을 액세스 할 경우에 당신은 당신이 당신의 JSON을 변경해야 인덱스 예를 들어

for (NSArray *currency in currencyInformation) { 
    NSLog(@"Currency: %@", [currency objectAtIndex:3]); 
} 

으로 일에 접근 할 필요가 배열 배열 대신 객체 배열을 사용하십시오. 이런 식으로 뭔가 : 당신이 지금과 같이 할 수

{ 
    "myData": [ 
     { 
      "primaryKey" : 1, 
      "currency" : "dollar", 
      <other keys + values>... 
     }, 
    ] 
} 

하는 경우 :

for (NSDictionary *currency in currencyInformation) { 
    NSLog(@"Currency: %@", [currency valueForKey:@"currency"]); 
} 
2

배열의 각 객체는 그래서, 배열 자체입니다 :

NSDictionary* json = [NSJSONSerialization 
         JSONObjectWithData:myData 
         options:kNilOptions 
         error:&error]; 

NSArray *currencyInformation = [json objectForKey:@"myData"]; 

for (NSArray *info in currencyInformation) { 
    // Then access each "column" with [info objectAtIndex:0,1,2,3,...] 
}