我将对象从fiddler传递给用codeigniter编写的服务。我的对象看起来像这样:
我的回复:
{
"GetResponse":{
"OrgName":"adfasd",
"OrgAdr1":"asdf",
"OrgAdr2":"NA",
"ProductList":[
{
"ProductID":8724,
"Pallets":0,
"Pieces":0,
"Description":"sdfsd"
}
]
}
}
我想要的是什么:
我想将响应保存为codeigniter中的JSON对象,并且还想在主Object中获取JSON对象或数组。
我尝试了什么:
我在codeigniter中的服务方法是这样的:
public function Save()
{
$Data = json_decode(file_get_contents('php://input'));
echo $Data;
}
但是我在Fiddler里面的 Response Body 中什么也没得到。
如果我使用此代码:
$Data = file_get_contents('php://input');
echo $Data;
然后它以String的形式向我显示响应。我想将它保存为JSON对象。
谁能告诉我在这里缺少什么?
答案 0 :(得分:9)
使用此代码:
header('Content-type: application/json');
$Data = json_decode(file_get_contents('php://input'),true);
现在,您将获得$Data
数组。
您可以通过$Data['name']
获得价值。
答案 1 :(得分:2)
json_decode()
以对象或关联数组的形式将json字符串解析为php变量。 json_encode()
正好相反。
我认为发生的事情是php://input
已经是json格式。当你通过json_decode()
运行它时,你把它变成一个php对象,当echo
编辑时应该抛出错误,如
类stdClass的对象无法转换为字符串....
如果错误报告被抑制,则脚本停在那里,你什么也得不到回应。
答案 2 :(得分:0)
要将任何值编码为JSON,我们必须使用json_encode()
。你正在解决非json对象的错误。所以结果为null。
public function Save()
{
$Data = json_encode(file_get_contents('php://input'));
echo $Data;
}
答案 3 :(得分:0)
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
)
)
)
)
答案 4 :(得分:0)
试试这个,
public function Save()
{
$Data = json_decode(file_get_contents('php://input'));
var_dump($Data);
}