为什么在以下情况下执行json_decode()之后我得到空白的白屏而不是等效的JSON对象数组?

时间:2015-03-06 11:41:33

标签: php arrays json request

以下是我的代码:

$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格式。

3 个答案:

答案 0 :(得分:1)

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中看到它。

答案 1 :(得分:1)

两件事,首先:$ json_body是无效的json格式, 其次:json_decode将返回一个数组,然后你应该print_r或var_dump out。

答案 2 :(得分:0)

这可能是因为$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":""}" 

不是数组。