【问题标题】:Get JSON response In Codeigniter在 Codeigniter 中获取 JSON 响应
【发布时间】:2013-10-02 08:39:13
【问题描述】:

我将对象从提琴手传递给用 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 内部的 Response Body 中什么也得不到。

如果我使用此代码:

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

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

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

【问题讨论】:

  • 您的响应不是有效的 json 字符串。请在此处查看 json.parser.online.fr
  • @RajeevRanjan 这只是一个额外的“,”(逗号)。我解决了请立即检查
  • @IMJ4U 现在检查我的答案...

标签: php json codeigniter


【解决方案1】:

使用此代码:

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

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

现在,您将获得$Data 作为一个数组。

你会通过$Data['name']获得价值。

【讨论】:

    【解决方案2】:

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

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

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

    如果错误报告被禁止,则脚本会停在那里并且您没有得到任何回应。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这没有任何意义。您还应该解释您的答案。
      【解决方案4】:

      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
                              )
      
                      )
      
              )
      
      )
      

      【讨论】:

        【解决方案5】:

        试试这个,

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

        【讨论】:

          猜你喜欢
          • 2018-05-04
          • 1970-01-01
          • 1970-01-01
          • 2022-06-28
          • 2013-09-12
          • 2015-02-12
          • 1970-01-01
          • 2021-09-12
          • 1970-01-01
          相关资源
          最近更新 更多