我正在将对象从小提琴手传递到用代码点火器编写的服务。我的对象看起来像这样:
我的回应 :
{
"GetResponse":{
"OrgName":"adfasd",
"OrgAdr1":"asdf",
"OrgAdr2":"NA",
"ProductList":[
{
"ProductID":8724,
"Pallets":0,
"Pieces":0,
"Description":"sdfsd"
}
]
}
}
我想要什么 :
我想在代码点火器中将响应保存为 JSON 对象,并且还想在主对象中获取 JSON 对象或数组。
我试过什么:
我在编码点火器中的服务方法是这样的:
public function Save()
{
$Data = json_decode(file_get_contents('php://input'));
echo $Data;
}
但我在小提琴手内部的响应正文中一无所获。
如果我使用此代码:
$Data = file_get_contents('php://input');
echo $Data;
然后它向我显示响应,但以字符串的形式。我想将其另存为 JSON 对象。
谁能告诉我我在这里错过了什么?
使用以下代码:
header('Content-type: application/json');
$Data = json_decode(file_get_contents('php://input'),true);
现在,您将$Data
为数组。
您可以通过$Data['name']
获得价值.
json_decode()
将JSON 字符串解析为对象或关联数组形式的 PHP 变量。 json_encode()
反其道而行之。
我认为正在发生的事情是php://input
已经是 json 格式。当你运行它时json_decode()
你把它变成了一个php对象,当echo
ed时,它应该抛出一个错误,如
类 stdClass 的对象无法转换为字符串....
如果禁止显示错误报告,则脚本将停止到此,并且不会得到任何回显。
要将任何值编码为 JSON,我们必须使用 json_encode()
. 你犯了什么错误,你正在解码一个非 JSON 对象。所以结果为空。
public function Save()
{
$Data = json_encode(file_get_contents('php://input'));
echo $Data;
}
> json_decode() 返回一个对象或数组,所以你的 save() 应该是这样的
public function Save()
{
$Data = json_decode(file_get_contents('php://input'));
echo '<pre>';
print_r( $Data);
}
输出将是:-
stdClass Object
(
[GetResponse] => stdClass Object
(
[OrgName] => adfasd
[OrgAdr1] => asdf
[OrgAdr2] => NA
[ProductList] => Array
(
[0] => stdClass Object
(
[ProductID] => 8724
[Pallets] => 0
[Pieces] => 0
[Description] => sdfsd
)
)
)
)
试试这个,
public function Save()
{
$Data = json_decode(file_get_contents('php://input'));
var_dump($Data);
}