PHP服务中的JSON解析问题


JSON parsing issues from PHP service

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

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

以及后面脚本中的许多单维数组:

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

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

echo json_encode($myjsons);

我正在开发一个与此服务通信的iOS应用程序。好吧,至少应该是这样。以下是iOS代码减去错误检查:(我使用JSONKit, btw)

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做点什么?

json_encode返回一个字符串,所以当你把这些放在一个数组中时,你得到一个字符串数组。当您json_encode该数组时,您将获得字符串的(JSON)字符串数组。

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

$myjsons[] = array($runners);
$myjsons[] = array($mrow);
echo json_encode($myjsons); // Correct JSON as you expect it.