0

我知道 JSON 规范说对象是一组无序的名称/值对。但我真的需要将有序的 JSON 发送到网络服务。问题是:

在网络服务(我不知道或无法访问代码)上,有一个步骤可以将我的 JSON 转换为 SOAP(必须订购所有对象)。

这是我尝试过的:

NSString *json = @"{'perf':1,'begin':'2013-07-17T15:35:33.659-03:00','end':'2013-08-01T15:35:33.659-03:00'}";


NSMutableURLRequest *request = [self requestWithMethod:@"POST"
                                                            path:@"/myPath" parameters:nil];

//set headers
NSString *contentType = [NSString stringWithFormat:@"application/json"];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
[request addValue:@"any-value" forHTTPHeaderField: @"User-Agent"];

//create the body
NSMutableData *postBody = [NSMutableData data];
[postBody appendData:[json dataUsingEncoding:NSUTF8StringEncoding]];

[request setHTTPBody:postBody];

//Add your request object to an AFHTTPRequestOperation
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:
     ^(AFHTTPRequestOperation *operation,
       id responseObject) {
         NSString *response = [operation responseString];
         NSLog(@"response: [%@]",response);
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
         NSLog(@"error: %@", [operation error]);
     }];

[operation start];

那么,我该怎么做呢?

4

2 回答 2

1

您将需要自己创建 JSON 文本(或者找到提供排序的库,如果存在的话)。

考虑使用键数组并为每个键/值对创建文本,然后将其(使用适当的 JSON 格式)写入NSMutableString.

于 2013-09-19T14:52:01.223 回答
1

您没有说 JSON 必须处于什么顺序。无论如何,您不应该依赖于AFNetworking对数据进行任何形式的操作。相反,你应该自己做。

由于 JSON 可以表示为NSDictionary(或NSArray),因此您应该使用这些类创建数据结构,使用内置的排序方法对它们进行排序(按字母顺序等),然后将它们转换为 JSON 表示。这不是您当前正在执行的操作,即将 JSON 创建为NSString.

于 2013-09-19T14:52:46.697 回答