【发布时间】:2014-03-25 08:37:38
【问题描述】:
我正在尝试在我的 PHP 应用程序中读取 JSON 消息,这是我的 php 代码:
$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
echo $obj->{'S3URL'};
当我这样做时,我收到以下错误:
Trying to get property of non-object in setImage.php on line 25 (line 25 is the echo $obj->{'S3URL'}; line)
这是对页面的请求的请求正文:
Request Url: http://localhost:8888/setImage.php
Request Method: POST
Status Code: 200
Params: {
"S3URL": "http://url.com"
}
这是请求标头:
Accept: application/json
Content-Type: application/json
Connection: keep-alive
Origin: chrome-extension: //rest-console-id
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML,
但是,如果我改为回显 $json 变量,我会得到以下信息:
S3URL=http%3A%2F%2Furl.com
所以看起来file_get_contents('php://input'); 将其作为字符串而不是 JSON 读取,这将使其解析更加困难。
知道为什么它不以 JSON 形式返回,或者我怎样才能让它以 JSON 形式返回?
【问题讨论】:
-
json_decode($json, TRUE);返回数组而不是对象。
-
'php://input' 总是按原样获取请求正文。因此,如果您没有收到 JSON 代码,则不会发送任何 JSON 代码。时期。由于您得到的字符串中有一个
=,因此该表单很可能以application/x-www-form-urlencoded的形式发送 -
Abhik,是的,我尝试删除 TRUE,但仍然没有骰子。谢谢 Johannes H,我正在使用 REST 控制台发送数据,从请求的内容标头看来,它应该以 JSON 格式发送,但也许不是?