2010-07-18 42 views
5

Tôi có một số vấn đề với phân tích JSON. Khi tôi nhấn URL, tôi đã có JSON phản ứng như thế này:Cách phát hiện đối tượng JSON/JSON Array trên XCode bằng cách sử dụng JSON-Framework

//JSON 1 
{ "data": 
    {"array": 
    ["3", 
     {"array": 
      [ 
      {"id":"1","message":"Hello","sender":"inot"}, 
      {"id":"2","message":"World","sender":"inot"}, 
      {"id":"3","message":"Hi","sender":"marza"} 
      ] 
     } 
    ] 
    }, 
"message":"MSG0001:Success", 
"status":"OK" 
} 

Nhưng nếu kết quả của dữ liệu chỉ là 1, phản ứng JSON là như thế này:

//JSON 2 
{ "data": 
    {"array": 
    ["3", 
     {"array": 
      {"id":"3","message":"Hi","sender":"marza"} 
     } 
    ] 
    }, 
"message":"MSG0001:Success", 
"status":"OK" 
} 

tôi thực hiện mã này vào nhận giá trị id, tin nhắn và người gửi và hoạt động tốt trên JSON 1, nhưng lỗi trên JSON 2. Tôi sử dụng JSON-Framework. Và câu hỏi là làm thế nào để phát hiện ra rằng phản ứng JSON là đối tượng ({}) hoặc mảng ([]) ??

// Parse the string into JSON 
NSDictionary *json = [myString JSONValue]; 

// Get all object 
NSArray *items = [json valueForKeyPath:@"data.array"]; 
NSArray *array1 = [[items objectAtIndex:1] objectForKey:@"array"]; 
NSEnumerator *enumerator = [array1 objectEnumerator]; 
NSDictionary* item; 
while (item = (NSDictionary*)[enumerator nextObject]) { 
    NSLog(@"id  = %@",[item objectForKey:@"id"]); 
    NSLog(@"message = %@",[item objectForKey:@"message"]); 
    NSLog(@"sender = %@",[item objectForKey:@"sender"]); 
} 

Trả lời

15

Bạn có thể sử dụng id và kiểm tra xem các đối tượng mà bạn nhận được là NSArray hoặc NSDictionary như thế này:

id item = [json valueForKeyPath:@"data.array"]; 
if ([item isKindOfClass:[NSArray class]]) { 
    // item is an array 
} 
else if ([item isKindOfClass:[NSDictionary class]]) { 
    // item is a dictionary 
} 
+0

Cảm ơn bạn Michael Kessler, nó hoạt động ngay bây giờ. – inot

+0

@inot, bạn được chào đón nhiều hơn để đánh dấu câu trả lời là được chấp nhận nếu nó giải quyết được vấn đề của bạn. –

Các vấn đề liên quan