[英]json_decode not working in php
请检查我下面的代码,并让我知道我做错了什么,我只想解码json并在浏览器上以数组形式打印
<?php
$json = '{
"Token" : "xxx-xxx-xxx",
"ID": "1",
"Recipients": [
{
"Recipient_ID": "XX",
"From_Name": "XXX",
"From_Email": "XXX",
"To_Name": "XXX",
"To_Email": "XXX",
"Subject": "XXX",
"Message": "XXX",
"Attachments": [
{
"File_Name": "XXX",
"File_Path": "XXX",
}
],
}
],
}';
$input = $json;
print_r(json_decode(stripslashes($input)));
?>
我尝试使用此json字符串进行在线解码( http://jsonviewer.stack.hu/ ),并且它可以正常工作,因此json字符串没有问题。 任何帮助将不胜感激。
<?php
$json = '{
"Token": "xxx-xxx-xxx",
"ID": "1",
"Recipients": [{
"Recipient_ID": "XX",
"From_Name": "XXX",
"From_Email": "XXX",
"To_Name": "XXX",
"To_Email": "XXX",
"Subject": "XXX",
"Message": "XXX",
"Attachments": [{
"File_Name": "XXX",
"File_Path": "XXX"
}]
}]
}';
$input = $json;
var_dump(json_decode(stripslashes($input)));
?>
问题出在您拥有的json格式上。您有一些需要删除的',',这就是json_decode()无法完成工作的原因。 该函数引发错误异常,但是您应该做一些技巧来查看错误。 您可以使用此代码查看错误。
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - No errors';
break;
case JSON_ERROR_DEPTH:
echo ' - Maximum stack depth exceeded';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - Underflow or the modes mismatch';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - Unexpected control character found';
break;
case JSON_ERROR_SYNTAX:
echo ' - Syntax error, malformed JSON';
break;
case JSON_ERROR_UTF8:
echo ' - Malformed UTF-8 characters, possibly incorrectly encoded';
break;
default:
echo ' - Unknown error';
break;
}
而且您的json应该是这样的。
$json = '{
"Token" : "xxx-xxx-xxx",
"ID": "1",
"Recipients": [
{
"Recipient_ID": "XX",
"From_Name": "XXX",
"From_Email": "XXX",
"To_Name": "XXX",
"To_Email": "XXX",
"Subject": "XXX",
"Message": "XXX",
"Attachments": [
{
"File_Name": "XXX",
"File_Path": "XXX"
}
]
}
]
}';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.