3

我将对象从提琴手传递给用 codeigniter 编写的服务。我的对象是这样的:

我的回复 :

   {
   "GetResponse":{
      "OrgName":"adfasd",
      "OrgAdr1":"asdf",
      "OrgAdr2":"NA",
      "ProductList":[
          {
               "ProductID":8724,
               "Pallets":0,
               "Pieces":0,
               "Description":"sdfsd"
          }
       ]
   }
}

我想要的是 :

我想将响应保存为 codeigniter 中的 JSON 对象,并且还想获取主对象中的 JSON 对象或数组。

我尝试了什么:

我在 codeigniter 中的服务方法是这样的:

public function Save()
{
     $Data = json_decode(file_get_contents('php://input'));
     echo $Data;
}

但是我在 Fiddler的响应正文中什么也没有。

如果我使用此代码:

$Data = file_get_contents('php://input');
echo $Data;

然后它向我显示响应,但以字符串的形式。我想将它保存为 JSON 对象。

谁能告诉我我在这里想念什么?

4

5 回答 5

11

使用此代码:

header('Content-type: application/json');

$Data = json_decode(file_get_contents('php://input'),true);

现在,你会得到$Data一个数组。

你得到的价值$Data['name']

于 2013-09-26T12:14:06.193 回答
2

json_decode()以对象或关联数组的形式将 json 字符串解析为 php 变量。json_encode()做相反的事情。

我认为正在发生的事情php://input已经是 json 格式。当你运行它时,json_decode()你把它变成一个 php 对象,当echoed 应该抛出一个错误,比如

类 stdClass 的对象无法转换为字符串 ....

如果错误报告被抑制,脚本就会停在那里,你什么也得不到。

于 2013-09-26T12:00:50.433 回答
0

要将任何值编码为 JSON,我们必须使用json_encode(). 您在解码非 json 对象时犯了什么错误。所以结果为空。

 public function Save()
    {
         $Data = json_encode(file_get_contents('php://input'));
         echo $Data;
    }
于 2013-09-26T11:41:44.423 回答
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
                        )

                )

        )

)
于 2013-09-26T12:05:55.287 回答
0

尝试这个,

public function Save()
{
     $Data = json_decode(file_get_contents('php://input'));
     var_dump($Data);
}
于 2013-09-26T12:07:45.453 回答