【发布时间】:2011-03-07 19:58:12
【问题描述】:
我的 JSON 有问题。它可以在 PHP 5.3 中正确返回(所以我不能使用 json_last_error()),并且当我将字符串显式复制到 json_decode (json_decode('{...}') 中时它会成功返回。它只在我通过时返回 null结果作为变量,我使用的是 php 5.2,这正是我需要的。
输出来自 PHPUnit 中的 JSON 日志记录:
[
{
"event": "suiteStart",
"suite": "",
"tests": 2
},
{
"event": "suiteStart",
"suite": "TagTestCase",
"tests": 2
},
{
"event": "test",
"suite": "TagTestCase",
"test": "TagTestCase::test_it",
"status": "fail",
"time": 0.00248718261719,
"trace": [
{
"file": "\/UnitTest\/PHPUnit.php",
"line": 98,
"function": "run",
"class": "PHPUnit_Framework_TestSuite",
"type": "->",
"args": [
{
}
]
},
{
"file": "\/UnitTest\/PHPUnit.php",
"line": 116,
"function": "run",
"class": "PHPUnit",
"type": "->",
"args": [
]
},
{
"file": "\/UnitTest\/PHPUnit.php",
"line": 212,
"function": "__tostring",
"class": "PHPUnit",
"type": "->",
"args": [
]
}
],
"message": "false assertionzzzzz.\nFailed asserting that <boolean:false> is true."
},
{
"event": "test",
"suite": "TagTestCase",
"test": "TagTestCase::test_two",
"status": "pass",
"time": 0.00182914733887,
"trace": [
],
"message": ""
}
]
编辑:这些是我一直在探索的路径 - 也许你是一个更好的探索者.. 可能提供帮助的三种可能途径:
- php 5.2 和 5.3 中的 json_decode() 有什么不同?他们改变了什么?
- 其他人使用 PHPUnit 中的 JSON,以及他们如何解析它。
- 将其放在变量中与将其打印到屏幕并将其复制到 json_decode() 中会发生什么变化
任何帮助将不胜感激(!)。
谢谢! 马特
【问题讨论】:
-
我使用JSONLint 来格式化您的 JSON。这也是一个验证 JSON 的好网站。
-
天哪。谢谢,我没有看到那个选项 - 我只是检查了一下,看起来它也在 JSONLint 中验证过:-/
-
PHP > 5.3.0 有
json_last_error()来帮助调试错误的 JSON。 php.net/json_last_error -
当 JSONLint 验证失败时,确保制表符和换行符硬编码为
\n和\t。字符串中的制表符不是有效的 JSON,祝你好运在一大段文本中区分制表符和几个空格;)(我只是花了太多时间注意到那个制表符......)