2012-03-05 73 views
1

可能重複:
Parse JSON in Objective-C with SBJSON使用SBJson,如何從對象數組中檢索字符串列表?

我有以下JSON響應(字符串)。我想把它解析成帶有所有患者姓名的NSArray

[{"pat_reg_no":"111181031P1","app_start_time":"10.15","pat_firstname":"Will Smith"}, 
{"pat_reg_no":"111181031P2","app_start_time":"11.15","pat_firstname":"Shane Watson"}, 
{"pat_reg_no":"111181031P3","app_start_time":"12.15","pat_firstname":"Michael Hussey"}, 
{"pat_reg_no":"111181031P1","app_start_time":"10.15","pat_firstname":"Will Smith"}] 

我該如何解析?

+0

請訪問[這個問題](http://stackoverflow.com/questions/6509214/parse-json-in-objective-c-with-sbjson)。在這裏他們談論同樣的問題,並有解決方案。 – carbonr 2012-03-05 06:24:58

回答

2

嘗試以下代碼。

NSString* jsonString; 
//jsonString suppose this String has That JSON Response. 

SBJSON *parser = [[[SBJSON alloc] init] autorelease]; 
NSDictionary *jsonResponse = (NSDictionary*)[parser objectWithString:jsonString error:nil]; 
NSArray *pat_reg_noArray = [jsonResponse valueForKey:@"pat_reg_no"] ; 
NSArray *app_start_timeArray= [jsonResponse valueForKey:@"app_start_time"] ; 
NSArray*firstnameArray=[jsonResponse valueForKey:@"pat_firstname"]; 

我希望它能起作用。

+0

thanx它完美的作品 – divakar 2012-03-05 07:18:20

+0

@divakar你歡迎,所以你應該投票我的答案.. !!!!!。 – Kamarshad 2012-03-05 07:29:23

+0

這是使用SBJson的_old_版本。 SBJSON類在幾年前就已棄用。請使用更新的版本:-) [免責聲明:我是SBJson的作者] – 2012-03-05 21:42:42

1

您已經張貼屬於someKey,所以做以下

SBJSON *jsonParser = [[SBJSON alloc] init]; 
NSDictionary * dictionary = [jsonParser objectWithString:YourString]; 
NSArray * array = [dictionary objectForKey:someKey]; 
NSMutableArray *nameArray = [NSMutableArray new]; 
for (NSDictionary *dict in array) 
{ 
    [nameArray addObject:[dict objectForKey:@"pat_firstname"]; 
} 
NSLog(@"x is %@",nameArray); 
[jsonParser release]; 

希望這將解決你的問題的陣列...

0

試試這個:

NSString *jsonString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
NSArray* array = [(NSDictionary*)[jsonString JSONValue] objectForKey:@"results"]; 
+1

必須導入「JSON.h」和「SBJson.h」 – Hector 2012-03-05 06:42:34

+0

爲什麼'JSON。 h' *和*'SBJson.h'?這聽起來不對。根據您使用的庫的版本,您只需包含其中一個。 [免責聲明:我是SBJson的作者。] – 2012-03-05 21:45:15

3

我寫的一個演示給你。

SBJsonParser *parser = [[SBJsonParser alloc] init]; 
id jsonObj = [parser objectWithString:@"[{\"pat_reg_no\":\"111181031P1\",\"app_start_time\":\"10.15\",\"pat_firstname\":\"Will Smith\"},{\"pat_reg_no\":\"111181031P2\",\"app_start_time\":\"11.15\",\"pat_firstname\":\"Shane Watson\"},{\"pat_reg_no\":\"111181031P3\",\"app_start_time\":\"12.15\",\"pat_firstname\":\"Michael Hussey\"},{\"pat_reg_no\":\"111181031P1\",\"app_start_time\":\"10.15\",\"pat_firstname\":\"Will Smith\"}]"]; 

if ([jsonObj isKindOfClass:[NSArray class]]) { 
    for (id obj in jsonObj) { 
     if ([obj isKindOfClass:[NSDictionary class]]) { 
      NSString *name = [obj objectForKey:@"pat_firstname"]; 
      NSLog(@"name %@", name); 
     } 
    } 
} 
[parser release]; 
+0

+1對不錯的一個... !!! – Kamarshad 2012-03-05 06:54:41

相關問題