如何将对象数组发送到JSON?

时间:2013-01-08 11:54:15

标签: objective-c ios

我正在使用包含对象数组的Web服务。但是在服务器端,它们只获得所有字段的空值。

客户端代码是:

        NSURL *url = [NSURL URLWithString:urlString];
        NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
        NSURLConnection *connection= [[NSURLConnection alloc] initWithRequest:urlRequest
                                                                     delegate:self];
        //************DATA formation
        NSMutableDictionary *jsonDict = [[NSMutableDictionary alloc]init];
        NSMutableDictionary *jsonDict1 = [[NSMutableDictionary alloc]init];

        [jsonDict setObject:@"3" forKey:@"rollNo"];
        [jsonDict setObject:@"Ezhil" forKey:@"FirstName"];
        [jsonDict setObject:@"Arasu" forKey:@"LastName"];

        [jsonDict1 setObject:@"4" forKey:@"rollNo"];
        [jsonDict1 setObject:@"XYZ" forKey:@"FirstName"];
        [jsonDict1 setObject:@"ABC" forKey:@"LastName"];

        NSArray *jsonArray=[[NSArray alloc]initWithObjects:jsonDict,jsonDict1, nil];

         //Converting to JSON string.
         SBJsonWriter *writer = [[SBJsonWriter alloc] init];
         NSString *jsonString = [writer stringWithObject:jsonArray];

         NSLog(@"JSON String : %@",jsonString);

        //************Setting DATA in URL
        [urlRequest setHTTPMethod:@"POST"];
        [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [urlRequest setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
        [connection start]; 

        // Code for response....

我不知道我错了。任何人都可以帮我解决这个问题。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我废弃了SBJson的东西,只使用原生控件......

执行与您正在执行的操作相同的操作,但删除SBJsonWriter并执行此操作以设置请求的正文...

[urlRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:jsonArray options:NSJSONWritingPrettyPrinted error:&error]];

这应该有效。

答案 1 :(得分:0)

谢谢..申请工作正常,没有任何修改。问题出在服务器端。但我认为我们可以采用您的建议而不是使用外部框架。

在这两种情况下我都得到像这样的json对象,

JSON String : 
 [{"rollNo":"3","FirstName":"Ezhil","LastName":"Arasu"},
  {"rollNo":"4","FirstName":"XYZ","LastName":"ABC"}]