php构造简单的json数据,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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值