2010-07-18 12 views
5

का उपयोग कर एक्सकोड पर जेएसओएन ऑब्जेक्ट/जेएसओएन ऐरे का पता लगाने के लिए मुझे JSON पार्सिंग के साथ कुछ समस्या है। इस तरह जब मैं यूआरएल मारा, मुझे मिल गया है JSON उत्तर:जेएसओएन-फ्रेमवर्क

//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" 
} 

लेकिन अगर डेटा के आधार पर सिर्फ 1 है, JSON उत्तर इस तरह है:

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

मैं के लिए इस कोड को लागू आईडी, संदेश और प्रेषक मान प्राप्त करें, और JSON 1 पर ठीक काम करें, लेकिन JSON 2 पर त्रुटि। मैं JSON-Framework का उपयोग करता हूं। और सवाल यह है कि JSON प्रतिक्रिया ऑब्जेक्ट ({}) या सरणी ([]) है इसका पता लगाने के लिए कैसे ??

// 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"]); 
} 

उत्तर

15

आप id का उपयोग और देखें कि क्या उद्देश्य यह है कि आप प्राप्त इस तरह NSArray या NSDictionary है कर सकते हैं:

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

धन्यवाद माइकल केसलर, यह अब काम करता है। – inot

+0

@inot, अगर आप अपनी समस्या हल करते हैं तो उत्तर को चिह्नित करने के लिए आपका स्वागत है। –