0

我正在使用 Codeigniter 休息服务器来创建一个 api。我的一位客户正在将以下 JSON 数组发送到我的 api

    {
     "code": "TEST",
     "store": "DBNG0024",
     "total": "50.00",
     "items": [{ "code":"121", "descr":"Pizza 1", "value":"50", "qty":"1",    "dept":"1"}]
    }

在其余服务器文档中说您可以访问以下数据:

   function client_post()
   {
      $code = $this->post('code');
      $store_code = $this->post('store');
      $total = $this->post('total');

      $data = array('code' => $this->post('code'), 'store' => $this->post('store'), 'status' => 'invalid', 'value' => '0', 'message' => 'code is invalid');

      $this->response($data);
   } 

这完美地工作。现在我遇到的问题是我无法访问多维数据“items”:[{“code”:“121”,“descr”:“Pizza 1”,“value”:“50”,“qty”: “1”,“部门”:“1”}]

我试过以下

    $items = json_decode($this->post(‘items’)); - Prints nothing
    $items = $this->post(‘items’); - prints the word Array

如果我打印这样的帖子数据 print_r($_POST,true); 以下是打印的内容

    Array ( [code] => 1234 [store] => 1234 [total] => 1234 [items] => Array )

谁能帮助我找到访问 $items 数组数据的方法

先感谢您

4

3 回答 3

0

通常,解码 JSON 后,它会默默地成为stdClass. 如果您能够检索 values codestore_code并且total作为$_POST, ,那么您也必须能够检索items

$code  = $this->post('code');
$items = json_decode($this->post('items'));

foreach($items as $item)
   echo $item->value;
于 2016-04-08T17:32:37.830 回答
0

我认为$items = $this->post(‘items’);是访问“项目”的正确方法,请检查此链接Send a raw json value to rest controller。也许您以错误的方式打印数组,请也检查此链接打印“数组”一词而不是行的值

于 2016-04-08T21:45:12.633 回答
0

正如您所说,您在打印时将项目作为 Array 获取,您可以通过访问其键值对来遍历它

foreach($_POST['items'] as $key=>$value)
{
  echo 'Key =>'.$key.'|---| Value =>'.$value;
}

希望这对您有所帮助,如果您被困在某个地方,请告诉我。

编辑:试试这个你可能会json_decode你的完整发布数据..试试下面的代码

// $json will contain your posted data
$json = '{"code": "TEST","store": "DBNG0024","total": "50.00","items": [{ "code":"121", "descr":"Pizza 1", "value":"50", "qty":"1","dept":"1"}]}';
        $items = json_decode($json)->items;

        "qty"=>"1", "dept"=>"1"];
        foreach($items[0] as $key=>$value)
        {
            echo 'Key =>'.$key.':: Value =>'.$value;
            echo '<br/>';
        }
于 2016-04-08T14:23:05.887 回答