2010-07-02 13 views
8

का उपयोग कर मैं इस तरह JSON ऑब्जेक्ट है:iPhone SDK (XCode) में JSON ऑब्जेक्ट को पार्स कैसे JSON-फ्रेमवर्क

{ "data": 
    {"array": 
    ["2", 
     {"array": 
      [ 
      {"clientId":"1","clientName":"Andy","job":"developer"}, 
      {"clientId":"2","clientName":"Peter","job":"carpenter"} 
      ] 
     } 
    ] 
    }, 
"message":"MSG0001:Success", 
"status":"OK" 
} 

मैं सरणी [0] मूल्य (2) और सरणी प्राप्त करना चाहते हैं [1] JSON-Framework का उपयोग कर मान (क्लाइंट आईडी, क्लाइंटनाम, नौकरी)। क्या आपको कोई विचार है कि ऐसा कैसे करें?

+9

क्षमा करें यदि मैं अशिष्ट ध्वनि सकता है, लेकिन 'iphone पार्स json', पहली हिट के लिए गूगल। यह एक अच्छा ट्यूटोरियल imoh है। –

उत्तर

21

मान लिया जाये कि आप अपने प्रोजेक्ट में instructions to install JSON-फ्रेमवर्क का पालन किया है, यहाँ आप उसका कैसे उपयोग कर रहा है (the docs here से लिया गया):

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

// Get the objects you want, e.g. output the second item's client id 
NSArray *items = [json valueForKeyPath:@"data.array"]; 
NSLog(@" client Id : %@", [[items objectAtIndex:1] objectForKey:@"clientId"]); 
+0

टाइपो। यह नहीं होना चाहिए [[आइटम ऑब्जेक्टएट इंडेक्स: 1] ऑब्जेक्टफोरकी: @ "क्लाइंटआईडी"]); –

+0

आप निश्चित रूप से सही हैं। मैंने अपना जवाब संपादित कर लिया है। – deanWombourne

6

अपने जवाब के लिए धन्यवाद, मेरी समस्या हल, मैं एक छोटे से संशोधित अपने कोड से बिट, यहां हैं:

// 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(@"clientId = %@", [item objectForKey:@"clientId"]); 
    NSLog(@"clientName = %@",[item objectForKey:@"clientName"]); 
    NSLog(@"job = %@",  [item objectForKey:@"job"]); 
} 
+0

मेरे पास जेसन प्रारूप में एक समय एपीआई है, मैं इसका उपयोग कैसे कर सकता हूं, कृपया मेरी मदद करें। jsont ({ "id": "ntp-a1.nict.go.jp", "यह": 1232963971.248, "सेंट": 1344228610.961, "छलांग": 34, "अगला": +१३४११००८००, " चरण ": 1 }) –

0

कैसे NSMutableArray में इस डाटा स्टोर करने की ??

while (item = (NSDictionary*)[enumerator nextObject]) { 
    NSLog(@"clientId = %@", [item objectForKey:@"clientId"]);//this 
    NSLog(@"clientName = %@",[item objectForKey:@"clientName"]);//this 
    NSLog(@"job = %@",  [item objectForKey:@"job"]);//this 
} 
1

हम, 1 वर्ग की जरूरत है कहते हैं कि MyData.h और MyData.m

//MyData.h 
@interface MyData : NSObject { 
    NSString *clientId; 
    NSString *clientName; 
    NSString *job; 
} 

@property (nonatomic, retain) NSString *clientId; 
@property (nonatomic, retain) NSString *clientName; 
@property (nonatomic, retain) NSString *job; 

@end 

//MyData.m 
@implementation MyData 

@synthesize clientId, clientName, job; 

- (void)dealloc{  
    [clientId release]; 
    [clientName release]; 
    [job release]; 
    [super dealloc]; 
} 

@end 
//------------------------------------- 

हमारे डाटा स्टोर करने के लिए करते हैं:

NSMutableArray *dataArray = [[NSMutableArray alloc]init]; 
while (item = (NSDictionary*)[enumerator nextObject]) { 
    MyData *aMyData = [[MyData alloc] init]; 
    aMyData.clientId = [item objectForKey:@"clientId"]; 
    aMyData.clientName = [item objectForKey:@"clientName"]; 
    aMyData.job  = [item objectForKey:@"job"]; 
    [dataArray addObject:aMyData]; 
    [aMyData release]; 
    aMyData = nil; 
} 
1

इस

while (item = (NSDictionary*)[enumerator nextObject]) { 
NSMutableArray *myArray = [[NSMutableArray alloc] init]; 
[myArray AddObject:((NSDictionary*)[enumerator nextObject])]; 
} 
1

कोशिश आप डेटा बिंदुओं का पदानुक्रम बना सकते हैं। उदाहरण के लिए, आप एक JSON ऑब्जेक्ट के भीतरी सरणी प्राप्त करना चाहते हैं, तो आप इसे का उपयोग कर सकते हैं:

NSArrray *objectArray = jsonObject[@"array"][@"2"][@"array"]; 

या, आप कुछ इसी तरह कर सकते हैं। उदाहरण के लिए, याल्प एपीआई में, आपको एक व्यवसाय का JSON प्रदान किया जाता है। एक सरणी में इन व्यवसायों देते समय, आप ऐसा करके वस्तु के विभिन्न तत्वों का उपयोग कर सकते हैं:

NSString *businessLocation = [businessArray objectAtIndex: indexOfBusinessInArray][@"location"][@"display_address"]; 
संबंधित मुद्दे