如何在JSON中创建嵌套标签

时间:2018-06-28 18:44:30

标签: php json

我一直在摆弄JSON嵌套标记,现在尝试了一些基础知识,但我对此有点头痛。我在

下具有此公共功能
   public function returnResponse($code, $data){
    header("content-type: application/json");
    $result = json_encode(['response' => ['status' => $code, "message"  => $data]]);
    echo $result ; exit;        

}
      $order= $cust->getDeliveryDetail();   

使用print_r($order);

      Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [order_id] => 4444
                    [menu] => two
                    [order_uniq] => 999oeo4

                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [pro_name] => Beans
                    [pro_sub] => Goods
                    [pro_type] => Open CA
                )

            [1] => Array
                (
                    [pro_name] => Rice
                    [pro_sub] => Fiber
                    [pro_type] => Diverca
                )

        )

)

然后附加带有引用的元素和值的对象

     $result ['order_id'] = $order[0][0]['order_id'];   
      $result ['menu'] = $order[0][0]['menu'];  
      $result ['order_uniq'] = $order[0][0]['order_uniq'];
      $result ['pro_name'] = $order[0][0]['pro_name'];
      $result ['pro_sub'] = $order[0][0]['pro_sub'];
     $result ['pro_type'] = $order[0][0]['pro_type'];

     $this->returnResponse(SUCCESS_RESPONSE, $result); //THIS IS THE ORIGINAL BEGINNING PUBLIC FUNCTION WE CREATED

在下面创建此JSON嵌套标签

     {
    "response": {
        "status": 200,
        "message": {
            "order_id": "4444",
            "menu": "two",
            "order_uniq": "999oeo4",
            "pro_name": "Beans",
            "pro_sub": "Goods",
            "pro_type": "Openca",
          }
    }
}

但是我想在下面创建一个JSON嵌套标签

    {
    "response": {
        "status": 200,
        "message": {
            "order_id": "4444",
            "menu": "two",
            "order_uniq": "999oeo4",
            "items": [
            {
            "pro_name": "Beans",
            "pro_sub": "Goods",
            "pro_type": "Openca",
            }
            {
            "pro_name": "Rice",
            "pro_sub": "Fiber",
            "pro_type": "Diverca",
            }    
            ]
    },
    }
}

2 个答案:

答案 0 :(得分:2)

喜欢吗?

$result = array(
    'order_id' = > $order[0][0]['order_id'],
    'menu' => $order[0][0]['menu'],  
    'order_uniq' => $order[0][0]['order_uniq'],
    'pro_name' => $order[0][0]['pro_name'],
    'pro_sub' => $order[0][0]['pro_sub'],
    'pro_type' => $order[0][0]['pro_type'],
    'items' => array()
);

foreach($order[1] as $item) {
    array_push(
        $result['items'],
        array(
            'pro_name' => $item['pro_name'],
            'pro_sub' => $item['pro_sub'],
            'pro_type' => $item['pro_type'],
        )
    );
}

答案 1 :(得分:2)

如果有帮助(也许没有帮助),那么在一开始这样做的正确方法是创建OrderItems表/字典。然后将项目存储在该表中,并使用“ order_id”引用您的Order表。这样,您可以将order_items作为一个数组对象拉出,然后非常简单地将其转换为json。

在此,您将获得“ pro_name”,“ pro_sub”和“ pro_type”作为项目,您将以编程方式将其拉出并创建自己的order_items数组。

$order= $cust->getDeliveryDetail();
$order_id = $order[0][0]['order_id'];
$order_menu = $order[0][0]['menu'];
$order_uniq = $order[0][0]['order_uniq'];

$items = [];
foreach($order[1] as $order_item) {
    $items[] = $order_item;
}

$result = [];
$result["order_id"] = $order_id;
$result["menu"] = $order_menu;
$result["order_uniq"] = $order_uniq;
$result["order_items"] = $items;

$this->returnResponse(SUCCESS_RESPONSE, $result);