为什么我在以下情况下执行 json_decode() 后得到空白屏幕而不是等效的 JSON 对象数组?
Why I'm getting blank white screen instead of an equivalent array of JSON object after executing json_decode() in following case?
以下是我的代码:
$json_body = $application->request->getBody();
如果我 echo $json_body;
那么我得到以下输出:
{
photo = (
{
fileURL = "https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo";
filename = "IMG_0004.JPG";
},
{
fileURL = "https://www.filepicker.io/api/file/WZeQAR4zRJaPyW6hDcza";
filename = "IMG_0003.JPG";
}
);
"status_info" = "";
}
然后我执行以下代码:
$request_data = json_decode($json_body, true);
现在,如果我 echo $request_data;
我得到空白屏幕。为什么会这样?
为什么我没有得到 JSON 对象的等效数组?请帮助我。
或者,如果我发送的 JSON 数据无效,请更正数据,使其采用正确的 JSON 格式。
JSON应该是:
{
"photo": [
{
"fileURL": "https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo",
"filename": "IMG_0004.JPG"
},
{
"fileURL": "https://www.filepicker.io/api/file/WZeQAR4zRJaPyW6hDcza",
"filename": "IMG_0003.JPG"
}
],
"status_info": ""
}
var_dump 您的 json_decode 与上述 json 的结果将显示结果数组:
array(2) {
["photo"]=>
array(2) {
[0]=>
array(2) {
["fileURL"]=>
string(55) "https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo"
["filename"]=>
string(12) "IMG_0004.JPG"
}
[1]=>
array(2) {
["fileURL"]=>
string(55) "https://www.filepicker.io/api/file/WZeQAR4zRJaPyW6hDcza"
["filename"]=>
string(12) "IMG_0003.JPG"
}
}
["status_info"]=>
string(0) ""
}
您可以看到它的实际效果 here。
两件事,第一:$json_body 是无效的 json 格式,
其次:json_decode 将 return 一个数组,然后你应该 print_r 或 var_dump 出来。
可能是因为 $json_body
根本没有编码。
如果你这样做 var_dump($json_body)
你应该得到 - 如果是 json_encoded -
string(228) "{"1":{"fileURL":"https:\/\/www.filepicker.io\/api\/file\/UYUkZVHERGufB0enRbJo","filename":"IMG_0004.JPG"},"2":{"fileURL":"https:\/\/www.filepicker.io\/api\/file\/WZeQAR4zRJaPyW6hDcza","filename":"IMG_0003.JPG"},"status_info":""}"
不是数组。
以下是我的代码:
$json_body = $application->request->getBody();
如果我 echo $json_body;
那么我得到以下输出:
{
photo = (
{
fileURL = "https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo";
filename = "IMG_0004.JPG";
},
{
fileURL = "https://www.filepicker.io/api/file/WZeQAR4zRJaPyW6hDcza";
filename = "IMG_0003.JPG";
}
);
"status_info" = "";
}
然后我执行以下代码:
$request_data = json_decode($json_body, true);
现在,如果我 echo $request_data;
我得到空白屏幕。为什么会这样?
为什么我没有得到 JSON 对象的等效数组?请帮助我。
或者,如果我发送的 JSON 数据无效,请更正数据,使其采用正确的 JSON 格式。
JSON应该是:
{
"photo": [
{
"fileURL": "https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo",
"filename": "IMG_0004.JPG"
},
{
"fileURL": "https://www.filepicker.io/api/file/WZeQAR4zRJaPyW6hDcza",
"filename": "IMG_0003.JPG"
}
],
"status_info": ""
}
var_dump 您的 json_decode 与上述 json 的结果将显示结果数组:
array(2) {
["photo"]=>
array(2) {
[0]=>
array(2) {
["fileURL"]=>
string(55) "https://www.filepicker.io/api/file/UYUkZVHERGufB0enRbJo"
["filename"]=>
string(12) "IMG_0004.JPG"
}
[1]=>
array(2) {
["fileURL"]=>
string(55) "https://www.filepicker.io/api/file/WZeQAR4zRJaPyW6hDcza"
["filename"]=>
string(12) "IMG_0003.JPG"
}
}
["status_info"]=>
string(0) ""
}
您可以看到它的实际效果 here。
两件事,第一:$json_body 是无效的 json 格式, 其次:json_decode 将 return 一个数组,然后你应该 print_r 或 var_dump 出来。
可能是因为 $json_body
根本没有编码。
如果你这样做 var_dump($json_body)
你应该得到 - 如果是 json_encoded -
string(228) "{"1":{"fileURL":"https:\/\/www.filepicker.io\/api\/file\/UYUkZVHERGufB0enRbJo","filename":"IMG_0004.JPG"},"2":{"fileURL":"https:\/\/www.filepicker.io\/api\/file\/WZeQAR4zRJaPyW6hDcza","filename":"IMG_0003.JPG"},"status_info":""}"
不是数组。