wpqwpq

问题起因

以往都是直接用构造数组的形式构造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;

分类:

技术点:

相关文章:

  • 2021-07-12
  • 2022-12-23
  • 2022-12-23
  • 2022-01-09
  • 2021-11-23
  • 2021-12-21
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-02-16
  • 2021-09-04
  • 2021-12-23
  • 2022-12-23
  • 2021-08-03
相关资源
相似解决方案