1

我在 PHP 脚本中的二维数组上使用 json_encode,如下所示:

$myjsons[] = json_encode(array($runners));

脚本后面还有许多一维数组:

$myjsons[] = json_encode(array($mrow));

然后我在脚本末尾对整个数组进行编码后回显:

echo json_encode($myjsons);

我正在开发一个与该服务通信的 iOS 应用程序。好吧,至少它是假设的。这是减去错误检查的 iOS 代码:(我正在使用 JSONKit,顺便说一句)

NSMutableURLRequest *urlReq = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:kStartRaceURL]];
[urlReq setHTTPMethod:@"GET"];

NSError *requestError;
NSURLResponse *urlResponse = nil;

NSData *response = [NSURLConnection sendSynchronousRequest:urlReq returningResponse:&urlResponse error:&requestError];

NSArray *deserializedData = [response objectFromJSONData];

deserializedData 是一个数组,但其中的所有对象都是字符串。我在其中放入了数组,如 PHP 所示,那么为什么它们是 NSString 的呢?实施的问题在哪里?或者我应该对 NSString 做些什么?

4

1 回答 1

3

json_encode返回一个字符串,所以当你把它们放在一个数组中时,你会得到一个字符串数组。当您json_encode使用该数组时,您会得到一个 (JSON) 字符串数组。

要解决此问题,您应该首先将所有数组合并到一个大数组中,然后只json_encode在该最终数组上调用一次。例子:

$myjsons[] = array($runners);
$myjsons[] = array($mrow);

echo json_encode($myjsons); // Correct JSON as you expect it.
于 2013-03-31T05:16:22.553 回答