iOS:将string数组发布到以下JSON的Web服务

  1. 如何从“发布”web服务获得以下响应。
  2. 我有一个名为textArray的string数组。 如何在下面的响应中发布关键字@“答案”的textArray。

    { "ProjID": "78", "Uid": "12", "EmailID": "ratnam_nv@yahoo.com", "ProjectInviterFQAnswers": [{ "slno": "1", "Answer": "a1", "order": "1", "flag": "F" }, { "slno": "2", "Answer": "a1", "order": "2", "flag": "F" }, { "slno": "1", "Answer": "a1", "order": "2", "flag": "Q" } ] }; 

这是我到目前为止所尝试的

 NSError *error = Nil; NSOperationQueue *queue = [[NSOperationQueue alloc] init]; NSDictionary *dictionaryArray1 = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"slno", @"a1", @"Answer", @"1", @"order", @"F", @"Flag", nil]; NSDictionary *dictionaryArray2 = [NSDictionary dictionaryWithObjectsAndKeys:@"2", @"slno", @"a1", @"Answer", @"1", @"order", @"F", @"Flag", nil]; NSDictionary *dictionaryArray3 = [NSDictionary dictionaryWithObjectsAndKeys:@"1", @"slno", @"a1", @"Answer", @"2", @"order", @"Q", @"Flag", nil]; NSArray *arrayAnswer = [NSArray arrayWithObjects:dictionaryArray1, dictionaryArray2, dictionaryArray3, nil]; NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"78", @"ProjID", @"12", @"UID", @"ratnam_nv@yahoo.com", @"EmailID", arrayAnswer, @"ProjectInviterFQAnswer", nil]; NSURL *url = [NSURL URLWithString:@" someurl "]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; NSData *requestData = [NSJSONSerialization dataWithJSONObject:dictionary options:kNilOptions error:&error]; [request setHTTPMethod:@"POST"]; [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody: requestData]; NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; [connection start]; [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){ if(error || !data) { NSLog(@"JSON Data not posted!"); [activity stopAnimating]; UIAlertView *alertMessage = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Data not saved" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertMessage show]; } else { [activity startAnimating]; NSLog(@"JSON data posted! :)"); NSError *error = Nil; NSJSONSerialization *jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error]; NSLog(@"Response is %@", jsonObject); //Not getting the response here Message = "An error has occurred." [activity stopAnimating]; } }]; 

请注意:

 NSArray *keys = [NSArray arrayWithObjects:@"slno", @"Answer", @"order", @"flage", nil]; 

但是你有:

 "flag": "Q" 

flage!= flag。

这就是为什么使用常量是好的!

接下来,关于你的问题:

首先你必须把JSON转换成一个NSDictionary。

后:

 NSArray * array = [jsonDict valueForKey:@"ProjectInviterFQAnswer"]; for(NSMutableDictionary * dict in array){ [dict setValue:<put here anything you want> forKey:@""]; } 

在完成之后,从jsonDict创build一个新的JSON,就完成了。

首先你必须将响应转换成字典,并设置你的textArraystring的值,然后再将其转换成jsonstring