在Codeigniter中获取JSON响应

时间:2013-09-26 11:38:49

标签: php json codeigniter

我将对象从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对象。

谁能告诉我在这里缺少什么?

5 个答案:

答案 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);
}