如何以正确的方式解析来自 GET 响应的数据?

Posted

技术标签:

【中文标题】如何以正确的方式解析来自 GET 响应的数据?【英文标题】:How can I parse data from GET response in proper way? 【发布时间】:2011-12-12 20:26:33 【问题描述】:

我试图解析来自网络服务器的响应数据。我正在使用 Xcode 4.2。

NSLog(@"Establishing connection...");
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:[NSURL URLWithString:@"example.com/test.php"]]; [request setHTTPMethod:@"GET"];
accept = @"Kokokoko";
NSLog(@"Adding value for HTTP Header");
[request addValue:accept forHTTPHeaderField: @"Accept"];

NSLog(@"Sending request...");
//send request & get response
returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSLog(@"Request sent");

然后我想使用 returnData 来解析 JSON 响应。应该是

["Test", "42", "OK"]

所以我尝试使用 NSDictionary 和 JSONValue 等技巧但没有成功。也许这个问题有一个简单的解决方案?

【问题讨论】:

【参考方案1】:

如果您希望您的服务器返回这样的字符串:

["Test", "42", "OK"]

那么它的 JSONValue 就是 NSArray(不是 NSDictionary)。试试这个:

NSString* responseString = [[[NSString alloc] initWithData:returnData encoding: NSUTF8StringEncoding] autorelease];

NSLog(@"Response String: %@", responseString);

// Supposing that you are using SBJson, the parsing part may look like this:
//
NSArray* responseArray = [returnString JSONValue];

NSLog(@"Response Array: %@", responseArray);

【讨论】:

以上是关于如何以正确的方式解析来自 GET 响应的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在全球范围内以最佳方式处理来自服务器的 401/403 响应

如何在一个 GET 请求中解析来自 Coinbase API 的所有股票代码

如何以正确的方式在 IOS SWIFT 3 中解析 Google 距离矩阵 API JSON

如何从来自 http.get 响应的对象中提取数据

如何获取HTTP请求响应问号

如何正确解析带有根元素的 JSON 作为 Swift 中的数组?