1

我正在为 php webservice 开发 iOS json 客户端,由于某种原因,我在解析来自服务器的相当简单的 json 响应时遇到问题。我需要做什么?

编辑 问题不在于解析,所以它必须是我发送 web 服务的 jsonString。

基本上我需要发送这个

POST 值
app = 标记
数据 = { "01,E1,AT333AT333,9053839719,2012-08-28 14:35:58,2012-08-28 14:35:58,43.154650,-79.3877390,1000,YS3DD55H812035739,1000000, 3434" }

当前代码为两个字符串打印 null 。

这是我处理对 Web 服务的调用的方法。

- (IBAction)submitMessage
{
    NSString* apps =@"mark";
    NSString* data = @"01,E1,AT333AT333,9053839719,2012-08-28 14:35:58,2012-08-28 14:35:58,43.154650,-79.3877390,1000,YS3DD55H812035739,1000000,3434";
    NSDictionary* jsonDictionary=[NSDictionary dictionaryWithObject: data forKey:@"data"];
    NSString* jsonString = [jsonDictionary JSONRepresentation];
    self.outPut.text=jsonString;
    NSLog(@"Made it");
    NSURL *url = [NSURL URLWithString:@"http://secure.g4apps.com/g4webservices.php"];
    AFHTTPClient *httpClient=[[AFHTTPClient alloc] initWithBaseURL:url];
    NSDictionary *params =[NSDictionary dictionaryWithObjectsAndKeys:
                           apps,@"app",
                           jsonString,@"smpdata",nil];

    NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" path:@"g4webservices.php" parameters:params];

    AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
        success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
            NSLog(@"Response: %@ %@", [JSON valueForKeyPath:@"Status"], [JSON valueForKeyPath:@"Data"]);
            self.outPut2.text = [NSString stringWithFormat:@"response: %@ %@",[JSON valueForKeyPath:@"Status"], [JSON valueForKeyPath:@"Data"]];    }
                        failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error,id JSON){
                                         NSLog(@"[Error]: %@", error);
    }
];

    [operation start];


}

这是一个示例 json 响应。

{

"Status":"11",
"Data":["AT333AT333,43.1547986,-79.3884892",
"BT343BT343,43.1547986,-79.3884892"]

}
4

2 回答 2

2

iOS 5+ 现在已经内置了用于解析 JSON 的 API。

有关更多信息,请参阅教程。

此外,您可以阅读NSJSONSerialization 文档

于 2012-08-29T20:15:47.953 回答
0

问题是我发送的 JSON 字符串。该服务没有为它接收的 json 字符串使用键值对,我无法弄清楚如何在 Objective-C 中重现它。

发布变量如下 app="app_name" data={ "Some csv data" }

我能够让 Objective C 生成的是 app="app_name" data={ "Data":{"Some csv data"} }

因此,我修改了服务器以处理 iOS 生成的内容,现在一切正常。弄清楚当 Data 数组有多个值时如何处理响应。

于 2012-08-30T06:10:34.653 回答