2013-04-05 41 views
1

我使用POST方法将一些参数发送到我的服务器,并从那里得到我的响应,并将其存储在字符串“serverResponse”中。这是我的服务器响应我存储在字符串如何解析iOS中的HTTP POST的JSON字符串输出

{ 
    "carIdentifier":[ 
     {"carId":"91"}, 
     {"carId":"93"}, 
     {"carId":"114"}, 
     {"carId":"117"} 
    ] 
} 

我有单独的JSON解析代码,但我不知道我怎样才能把这个作为输入到我的JSON解析代码。 以下是我的JSON解析代码

-(void)getcarList:(NSString *)serverResponse 
{ 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
     NSObject *recommendedcarJSON = nil; 
     NSData *recommendedcarsData = [NSData dataWithContentsOfURL:[NSURL URLWithString:serverResponse]]; 
     NSLog(@"%@",recommendedcarsData); 
     if(recommendedcarsData) 
      recommendedcarJSON = [NSJSONSerialization JSONObjectWithData:recommendedBooksData options:NSJSONReadingMutableContainers error:nil]; 

     if(!recommendedcarsData){ 
      NSLog(@"Error with JSON Serialization"); 
     } else{ 
      [self saveRecommendedcarData:(NSDictionary *)recommendedcarJSON]; 
     } 
    }); 
} 

在saveRecommendedcarData方法,我创建一个plist,以保存该分析数据。我怎样才能让我的服务器响应字符串作为输入到json解析?

+0

@Bhargavi你能告诉我答案吗? – Naveen 2013-04-05 07:10:13

+0

你显示的json是你的serverResponse字符串吧? – 2013-04-05 07:11:49

+0

是的。这是我用来从服务器响应的代码NSString * serverOutput = [[NSString alloc] initWithData:returnData encoding:NSASCIIStringEncoding]; NSLog(@“%@”,[NSString stringWithFormat:@“%@”,serverOutput]); – Naveen 2013-04-05 07:12:58

回答

2
NSError *jsonError = nil; 
id allValues = [NSJSONSerialization JSONObjectWithData:[serverResponse dataUsingEncoding:NSUTF8StringEncoding] 
               options:0 
               error:&jsonError]; 

if(jsonError!=nil) 
    NSLog(@"Json_Err: %@",jsonError); 

NSArray *carIdentifier = [(NSDictionary*)allValues objectForKey:@"carIdentifier"]; 
NSLog(@"%@",carIdentifier); 

for(NSDictionary *dict in carIdentifier) 
     NSLog(@"carId: %@",[dict valueForKey:@"carId"]); 

试试这个。

UPDATE

-(void)getcarList:(NSString *)serverResponse 
{ 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ 
     NSError *jsonError = nil; 
     id allValues = [NSJSONSerialization JSONObjectWithData:[serverResponse dataUsingEncoding:NSUTF8StringEncoding] 
                options:0 
                error:&jsonError]; 

     if(jsonError!=nil) 
      NSLog(@"Json_Err: %@",jsonError); 

     NSArray *carIdentifier = [(NSDictionary*)allValues objectForKey:@"carIdentifier"]; 
     NSLog(@"%@",carIdentifier); 

     for(NSDictionary *dict in carIdentifier) 
       NSLog(@"carId: %@",[dict valueForKey:@"carId"]); 

     }); 
} 
+0

其打印空值 – Naveen 2013-04-05 07:24:17

+0

您是直接使用serverResponse还是使用recommendedcarsData对象?请参阅更新后的答案,尝试使用此方法。 – 2013-04-05 07:26:16

+0

在数据发送部分(使用后)中,有一个条件用于检查服务器响应是否为空。如果(serverResponse!= NULL){//我在这里添加了你的代码} – Naveen 2013-04-05 07:28:35

0

如果你想从你的约会中获得价值,然后使用下面的代码:

for(i=0 ; i < myDic.count; i++) 
{ 
    NSLog(@"%@",[[myDic objectForKey:@"carIdentifier"] objectAtIndex:i] objectForKey:@"carId"]) 
} 
+0

请阅读我的问题 – Naveen 2013-04-05 07:07:41