JSONKit 无法从 php 解析简单的 JSON?

Posted

技术标签:

【中文标题】JSONKit 无法从 php 解析简单的 JSON?【英文标题】:JSONKit failed to parse simple JSON from php? 【发布时间】:2012-04-10 11:29:18 【问题描述】:

我在我的 ios 应用程序中使用 JSONKit。 它加载了一个由我的 php 文件提供的极其简单的 JSON:

http://staging.comwerks.net/terrence/ecitizen/article.php

不知何故,它产生了一个错误: “意外的令牌,想要 '', '', '[', ']', ',', ':', 'true', 'false', 'null', '"STRING"', 'NUMBER' .

当我尝试使用http://jsonlint.com/ 对上面的 URL 进行 lint 处理时。它给出了一个类似的错误抱怨左括号!

我的 php 再简单不过了:

<?php
header('Content-type: application/json');
$json = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($json);
?>

【问题讨论】:

+1 提出了一个非常好的问题。 【参考方案1】:

它可能会抱怨响应开头的 Unicode 字节顺序标记。如果我将输出复制并粘贴到 linter 中,它会验证。它可能在您的 article.php 文件的开头。您的文本编辑器应该可以选择不使用它进行保存(可能在“另存为...”对话框中)。

http://en.wikipedia.org/wiki/Byte_order_mark

【讨论】:

谢谢 nick... 我在 UTF8-Without BOM 中使用 Notepad++ 重新保存了 php 文件。然后就可以了! 没问题。 BOM 导致的问题比解决的问题多,因此最好尽可能不使用它们!【参考方案2】:

我同意尼克的观点。当我将json直接拉到一个文件中时,我的编辑说编码是带有BOM的UTF-8。

此外,您使用的 JSON 验证器给了我这个错误:

JSON Parse error: Unrecognized token '?'

【讨论】:

以上是关于JSONKit 无法从 php 解析简单的 JSON?的主要内容,如果未能解决你的问题,请参考以下文章

JSONKit 是不是会造成内存泄漏?

iOS关于JSONKit解析Unicode字符内容出错,问题出在u0000

JSON解析(引入第三方JSONKit)

使用 JSONKit 解析 JSON 文件

使用 JSONKit 在 iOS 中解析 JSON 数组 - 没有 ObjectForKey 标记的数组?

适用于 iPhone 应用程序的 JSONKit?