JSON

2012-08-16 2 views
0
내가 JSON없이 사용

내 현재 코드는 다음과 같습니다JSON

parts = [NSArray arrayWithObjects: 
      [[part alloc] initWithpartName:@"Part1" imageName:@"picture1.jpg"], 
      [part alloc] initWithpartName:@"Part2" imageName:@"picture2.jpg"], 
      [part alloc] initWithpartName:@"Part3" imageName:@"picture3.jpg"] 
      nil]; 

내가 페치 JSON은 다음과 같습니다

[{"id":"1","case_name":"NZXT Phantom 
410","case_description":"","case_type":"ATX","case_color":"White","case_price":"99.99","case 
_image":""},{"id":"2","case_name":"Thermaltake 
MK+","case_description":"","case_type":"ATX","case_color":"Black","case_price":"84.99","case 
_image":""} 

내가 그것을 가져 오기 위해 이것을 사용 :

NSString *urlString = [NSString stringWithFormat:@"http://site.com/get/parts/part.php?part=case"]; 

     NSURL *url = [NSURL URLWithString:urlString]; 

     NSString *data = [NSData dataWithContentsOfURL:url]; 

질문 : 어떻게이 json을이 배열에 넣을 수 있습니까? 나는 SBJson을 가지고 있고 나는 이것을 사용하여 시도 : 당신이 SBJSON 또는 다른 JSON 파서를 사용하는 경우

SBJsonParser *parser = [[SBJsonParser alloc] init]; 

     parts = [[parser objectWithString:data error:nil] copy]; 

누군가가 나는 컬러, 설명, 유형

답변

0

같은 여분의 데이터와 분석 방법으로 저를 수정할 수 있습니다 이 JSON 문자열을 구문 분석하면 NSArray 배열의 각 항목이 NSDictionary 인 NSArray가 반환됩니다. 찾으려는 키/값 쌍은 해당 사전 내에 있습니다. 직접 "파트"객체의 배열을 제공하지 않습니다. 수동으로 코드를 작성해야합니다. 즉 당신이 뭘 하려는지 경우

가, 다음 코드는 다음과 같이 보일 것입니다 :

NSMutableArray *result = [[NSMutableArray *alloc] init]; 
NSArray *jsonObj = [parser objectWithData:data]; 
[jsonObj enumerateObjectsUsingBlock:^(NSDictionary *dict, NSUInteger idx, BOOL *stop) { 
    Part *part = [[part alloc] initWithPartName:[dict objectForKey:@"case_name"] 
             imageName:[dict objectForKey:@"case_image"]]; 
    [result addObject:part]; 
}]; 

당신이 JSON 데이터를 사용하여 채울하려는 파트 클래스에서 더 많은 필드가있는 경우, 적절한 키 이름 (예 : id 또는 case_description)을 사용하여 dict objectForKey:의 결과를 기반으로 해당 필드를 설정하는 코드를 추가 할 수 있습니다.

+1

조금 더 일반적이지만 더 정확하게 말하자면 파서에서 얻은 것은 Objective-C 오브젝트에서 JSON 문자열을 정확하게 표현한 것입니다. JSON의 가장 바깥 쪽 "레이어"가 배열 인 경우 배열을 얻습니다. 가장 바깥 쪽의 "레이어"가 사전 인 경우 사전을 얻습니다. –

+0

그래서 Id는 "Part"클래스를 작성하지만,이 부분을 – kezi

+0

@kdogisthebest - NSObject로 정의 할 수 있습니다. 그런 다음 객체를 다시 가져올 때 NSArray 또는 NSDictionary 중 어느 것이 있는지 테스트하십시오. –