zoukankan      html  css  js  c++  java
  • PHP利用数组构造JSON

    问题起因

    以往都是直接用构造数组的形式构造json

    例子

    $arr = array("A"=>"1","B"=>"2");
    $arr = json_encode($arr);
    print_r($arr);
    

    得到输出

    {"A":"1","B":"2","C":"3"}
    

    然而此时要构造这样的json:

    {
        "table": [
            {
                "id": "0",
                "flow": [
                    {
                        "id": "0",
                        "match": {
                            "in-port": "1",
                            "vlan-match": {
                                "vlan-id": {
                                    "vlan-id-present": "true",
                                    "vlan-id": "20"
                                }
                            }
                        },
                        "instructions": {
                            "instruction": [
                                {
                                    "apply-actions": {
                                        "action": [
                                            {
                                                "output-action": {
                                                    "output-node-connector": "3",
                                                    "max-length": "65535"
                                                },
                                                "order": "1"
                                            },
                                            {
                                                "pop-vlan-action": {},
                                                "order": "0"
                                            }
                                        ]
                                    },
                                    "order": "0"
                                }
                            ]
                        },
                        "buffer_id": "65535",
                        "installHw": "true",
                        "barrier": "true",
                        "strict": "true",
                        "priority": "160",
                        "idle-timeout": "0",
                        "hard-timeout": "0",
                        "table_id": "0"
                    }
                ]
            }
        ]
    }
    

    对于[] ,以及空的{}的如果构造是一个难题。

    问题解决

    访问到了一篇文章 php构造json的方法,并补充了构造空{}的方案

    构造空{}方案如下

    $arr = array("A"=>"1","B"=>"2","C"=>"3","D"=> new stdClass());
    $arr = json_encode($arr);
    print_r($arr);
    

    结果

    {"A":"1","B":"2","C":"3","D":{}}
    

    综合上述方案,构造上述方案,并得到解决

    $post_data = array();
    $post_data["table"][0]['id'] = "0";
    $post_data["table"][0]['flow'][0]["id"] = "0";
    $post_data['table'][0]['flow'][0]["match"]["in-port"] = "1";
    $post_data['table'][0]['flow'][0]['match']['vlan-match']['vlan-id']['vlan-id-present'] = "true";
    $post_data['table'][0]['flow'][0]['match']['vlan-match']['vlan-id']['vlan-id'] = "20";
    $post_data['table'][0]['flow'][0]['instructions']['instruction'][0]['apply-actions']['action'][0]['output-action']['output-node-connector'] = "3";
    $post_data['table'][0]['flow'][0]['instructions']['instruction'][0]['apply-actions']['action'][0]['output-action']['max-length'] = "65535";
    $post_data['table'][0]['flow'][0]['instructions']['instruction'][0]['apply-actions']['action'][0]['order'] = "1";
    $post_data['table'][0]['flow'][0]['instructions']['instruction'][0]['apply-actions']['action'][1]['pop-vlan-action'] = new stdClass();
    $post_data['table'][0]['flow'][0]['instructions']['instruction'][0]['apply-actions']['action'][1]['order'] = "0";
    $post_data['table'][0]['flow'][0]['instructions']['instruction'][0]['order'] = "0";
    $post_data['table'][0]['flow'][0]['buffer_id'] = "65535";
    $post_data['table'][0]['flow'][0]['installHw'] = "true";
    $post_data['table'][0]['flow'][0]['barrier'] = "true";
    $post_data['table'][0]['flow'][0]['strict'] = "true";
    $post_data['table'][0]['flow'][0]['priority'] = "160";
    $post_data['table'][0]['flow'][0]['idle-timeout'] = "0";
    $post_data['table'][0]['flow'][0]['hard-timeout'] = "0";
    $post_data['table'][0]['flow'][0]['table_id'] = "0";
    
    
    $post_data = json_encode($post_data);
    echo $post_data;
    
  • 相关阅读:
    T-SQL:Varchar和Nvarchar区别(八)
    UI5-文档-4.1-Hello World!
    UI5-文档-4-Walkthrough
    UI5-文档-3-Hello World!
    UI5-文档-2.5-开发混合Web容器
    UI5-文档-2.4-Node.js-Based开发环境
    UI5-文档-2.3-使用SAPUI5工具为Eclipse开发应用程序
    UI5-文档-2.2-使用SAP Web IDE开发应用程序
    UI5-文档-2.1-使用OpenUI5开发应用
    UI5-文档-2-开发环境
  • 原文地址:https://www.cnblogs.com/wpqwpq/p/6289395.html
Copyright © 2011-2022 走看看