我试图在我的PHP应用程序中读取JSON消息,这是我的PHP代码:
$json = file_get_contents('php://input');
$obj = json_decode($json, TRUE);
echo $obj->{'S3URL'};
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到以下错误:
Trying to get property of non-object in setImage.php on line 25 (line 25 is the echo $obj->{'S3URL'}; line)
Run Code Online (Sandbox Code Playgroud)
这是页面请求的请求体:
Request Url: http://localhost:8888/setImage.php
Request Method: POST
Status Code: 200
Params: {
"S3URL": "http://url.com"
}
Run Code Online (Sandbox Code Playgroud)
这是请求标头:
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,
Run Code Online (Sandbox Code Playgroud)
但是,如果我反过来调出$json变量,我得到以下内容:
S3URL=http%3A%2F%2Furl.com
Run Code Online (Sandbox Code Playgroud)
所以它看起来像是file_get_contents('php://input');以字符串形式读取,而不是JSON,这将使解析更加困难.
知道为什么它不作为JSON返回,或者我怎么能让它作为JSON返回?
小智 7
有两种类型用于执行此类请求
首先:您可以将它用作 stdClassObject
$data = json_decode(file_get_contents('php://input'));
它将返回一个对象,您可以从中检索数据,例如
$名称=$数据->名称;
第二:你可以将它用作数组
$data = json_decode(file_get_contents('php://input'), true);
它将返回一个对象,您可以从中检索数据,例如
$name = $data['name'];
您的使用json_decode是创建关联数组,而不是对象.您可以将其视为数组,而不是对象.如果你想要一个对象,请使用它,而不是:
$obj = json_decode($json);
Run Code Online (Sandbox Code Playgroud)
assoc当为TRUE时,返回的对象将转换为关联数组.
另外,正如Johannes H.在评论中指出的那样,输出结果echo $json;表明你实际上并没有真正接收JSON,所以你也需要解决这个问题.你问为什么它不是JSON; 如果没有看到你如何请求这个脚本,就不可能肯定地说.
| 归档时间: |
|
| 查看次数: |
53569 次 |
| 最近记录: |