【问题标题】:JSON parsing issues from PHP service来自 PHP 服务的 JSON 解析问题
【发布时间】:2013-03-31 05:10:28
【问题描述】:

我在 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 做些什么?

【问题讨论】:

    标签: php ios objective-c json


    【解决方案1】:

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

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

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

    【讨论】:

    • 老实说,我认为这就是问题所在,尽管 PHP 绝不是我选择的语言。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多