我有一个json形式的字符串,我解码为php变量。 但是如果json不是有效的json字符串,则解码会给出NULL。
我正在寻找一个可以告诉我解码失败的部分的脚本。
例如,我有以下字符串:
{
"error": "OK",
"pathlist": [
{
"path": "datu5"
"pathId": "10100010"
},
{
"path": "datum",
"pathId": "10100011"
}
]
}
然后我想在第4行附近显示错误是错误: 例如:
Error: Parse error on line 4:
... "path" : "datu5" "pathId" : "10100010
----------------------^
Expecting 'EOF', '}', ':', ',', ']', got 'STRING'
我有这样的PHP脚本吗?
答案 0 :(得分:1)
试试这个lib:https://github.com/Seldaek/jsonlint
use Seld\JsonLint\JsonParser;
$parser = new JsonParser();
// returns null if it's valid json, or a ParsingException object.
$parser->lint($json);
// Call getMessage() on the exception object to get
// a well formatted error message error like this
// Parse error on line 2:
// ... "key": "value" "numbers": [1, 2, 3]
// ----------------------^
// Expected one of: 'EOF', '}', ':', ',', ']'
// Call getDetails() on the exception to get more info.
// returns parsed json, like json_decode() does, but slower, throws
// exceptions on failure.
$parser->parse($json);