在Objective-C中发布JSON

我今天有一个相当容易的问题。 我有一个应用程序,需要以2D GPS坐标的forms将一个简单的JSON数组发送到远程服务器。 该应用程序将使用CoreLocation框架来生成这些坐标。 现在,我想硬编码一些样本坐标以获得正确的JSON。 但是,我似乎无法在ObjC代码中正确形成JSON。

这是代码:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http:myserver/handler/index"]]; [request setHTTPMethod:@"POST"]; NSString *jsonString = @"{" @" \"geo\": {" @" \"lat\": \"37.78\"," @" \"lon\": \"-122.40"; NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; [request setHTTPBody:jsonData]; (void)[[NSURLConnection alloc] initWithRequest:request delegate:self]; 

这是服务器期望(但没有收到):

 { "geo": { "lat": "37.78", "lon": "-122.40" } 

我确定这是一个简单的JSON格式问题或者我自己的另一方面是numskull移动。

任何帮助总是受到赞赏!

你正在以艰难的方式做到这一点。 创建一个NSDictionary然后将其转换为所需的JSON数据:

 NSDictionary *dictionary = @{ @"geo" : @{ @"lat" : @"37.78", @"lon" : @"-122.40" } }; NSError *error = nil; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error]; if (jsonData) { // process the data } else { NSLog(@"Unable to serialize the data %@: %@", dictionary, error); } 

根本不需要字符串。

编辑:如果您的真实数据是一个对象数组,那么创建一个字典数组或您需要的任何结构。 其余的都是一样的。

你错过了一个分号。 检查如下:

  { geo = { "-122.40" = lon; "37.78" = lat; }; 

}

理想情况下,您需要这样做:

 NSDictionary *positionDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"lat",@"37.78",@"lon",@"-122.40", nil]; NSDictionary *jsonDict = [[NSDictionary alloc] initWithObjectsAndKeys:positionDictionary, @"geo", nil]; 

然后传递jsonDict。