2013-06-09 3 views
14

में कनवर्ट करना मेरे पास NSString है जो NSString के रूप में JSON सरणी संग्रहीत कर रहा है। NSStringcolorArray कहा जाता है की मान है:जेएसओएन डेटा के एनएसएसआरआर को एनएसएआरआरई

[{ "color":"Red" },{ "color":"Blue" },{ "color":"Yellow"}]; 

मैं भी एक tableview है कि मैं आदेश तालिका पॉप्युलेट करने के लिए में में सरणी आयात करना चाहते हैं की है। तालिका काम करता है अगर मैं नीचे की तरह एक सरणी में tableData लोड है, लेकिन मैं समझ नहीं कैसे एक सरणी कि tableData नीचे दिखाया गया है की तरह पॉप्युलेट करने के लिए इस्तेमाल किया जा सकता में NSString कन्वर्ट करने के लिए ...

किसी को भी विचार है ? बहुत धन्यवाद!

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Initialize table data 
    tableData = [NSArray arrayWithObjects:@"Red", @"Blue", @"Yellow", nil]; 
} 
+3

-1 कैसे 1000 समय – borrrden

+0

मुझे लगता है कि इसकी परोक्ष स्ट्रिंग के लिए करता है, तो धर्मान्तरित के लिए NSArray में JSON कन्वर्ट करने के लिए पूछ रहा है? – pampi

उत्तर

37
// Your JSON data: 
NSString *colorArray = @"[{ \"color\":\"Red\" },{ \"color\":\"Blue\" },{ \"color\":\"Yellow\"}]"; 
NSLog(@"colorArray=%@", colorArray); 

// Convert to JSON object: 
NSArray *jsonObject = [NSJSONSerialization JSONObjectWithData:[colorArray dataUsingEncoding:NSUTF8StringEncoding] 
                 options:0 error:NULL]; 
NSLog(@"jsonObject=%@", jsonObject); 

// Extract "color" values: 
NSArray *tableData = [jsonObject valueForKey:@"color"]; 
NSLog(@"tableData=%@", tableData); 

आउटपुट:

 
colorArray=[{ "color":"Red" },{ "color":"Blue" },{ "color":"Yellow"}] 
jsonObject=(
     { 
     color = Red; 
    }, 
     { 
     color = Blue; 
    }, 
     { 
     color = Yellow; 
    } 
) 
tableData=(
    Red, 
    Blue, 
    Yellow 
) 

अंतिम चरण -[NSArray valueForKey:] कि valueForKey: लागू सरणी के वस्तुओं में से प्रत्येक पर कुंजी का उपयोग कर के परिणामों से युक्त एक सरणी रिटर्न की विशेष सुविधा का उपयोग करता।

+0

धन्यवाद मार्टिन, मैं इसे देख लूंगा। रूपांतरण को सही ढंग से काम करने के लिए एनएसएसटींग को स्लेश रखने की आवश्यकता है? एक बार फिर धन्यवाद! – Brandon

+0

@ ब्रैंडन: नमूना कोड में स्ट्रिंग स्थिर के रूप में आपके नमूना इनपुट को परिभाषित करने के लिए बैकस्लाश आवश्यक थे। –

+0

@ ब्रैंडन: मैंने चरणों को स्पष्ट करने के लिए कुछ एनएसएलओजी आउटपुट जोड़ा है। –

2

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *jsonString = ...//String representation of json 
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
    //colors is a NSArray property used as dataSource of TableView 
    self.colors = [NSJSONSerialization JSONObjectWithData:jsonData 
                options:NSJSONReadingMutableContainers 
                error:nil]; 

} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    // Return the number of sections. 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    // Return the number of rows in the section. 
    return [self.colors count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    NSDictionary *color = self.colors[indexPath.row]; 
    cell.textLabel.text = color[@"color"]; 

    return cell; 
} 
0

प्रयास करें मान लें कि आप ios 5 or higher उपयोग कर रहे हैं, JSON क्रमबद्धता में बनाया गया है:

NSArray *json = [NSJSONSerialization 
     JSONObjectWithData:[string dataUsingEncoding:NSUTF8StringEncoding] 
     options:kNilOptions 
     error:&error]; 

iOS5 के लिए, आप SBJSON उपयोग कर सकते हैं एक ही लक्ष्य को हासिल करने से पहले:

NSArray *jsonObjects = [jsonParser objectWithString:string error:&error]; 
0

आपको बस इस तरह से अपने ट्रिंग को पार्स करने की आवश्यकता है:

NSString *jsonString = @"[{\"color\":\"Red\" },{\"color\":\"Blue\" },{\"color\":\"Yellow\"}]"; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

NSError *error = nil; 
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error]; 

इस के बाद आप dictionay की एक सरणी सभी मूल्यों आप पाश सरणी करते हैं और प्रत्येक शब्दकोश पढ़ने के लिए प्राप्त करने के लिए

NSMutableArray *colorsArray = [NSMutableArray arrayWithCapacity:[jsonArray count]]; 

for (NSDictionary *colorDictionary in jsonArray) { 

    NSString *colorString = [colorDictionary objectForKey:@"color"]; 
    [colorsArray addObject:colorString]; 
} 

अब colorsArray NSMutableArray इस तरह है:

[NSMutableArray arrayWithObjects:@"Red", @"Blue", @"Yellow", nil]; 
0

यदि आपका डेटा किसी webservice से आने में है:

NSArray *tableData = [[NSJSONSerialization JSONObjectWithData:request.responseData options: NSJSONReadingMutableContainers error: &error] objectForKey:"yourKeyForColorArray"]; 
1
NSData * data = [colorArray dataUsingEncoding:NSUTF8StringEncoding] 
NSDictionary *JSON = 
    [NSJSONSerialization JSONObjectWithData: data 
            options: NSJSONReadingMutableContainers 
             error: &e]; 

NSArray *tableData = [JSON valueForKey:@"color"]; 

आशा .. इस में मदद करता है

संबंधित मुद्दे