问题起因

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

PHP利用数组构造JSON的更多相关文章

  1. 如何利用JavaScript遍历JSON数组

    1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  2. jsoncpp构造json字符串和json数组

    jsoncpp构造json字符串和json数组 参考文章:Jsoncpp的简单使用 下载json文件夹放在c++项目的include目录下,在CMakeLists中include进去,然后就可以在代码 ...

  3. Java基础/利用fastjson反序列化json为对象和对象数组

    利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 ...

  4. java 构造json对象数组

    利用for构造 import com.google.gson.JsonArray; import com.google.gson.JsonObject; public class Test { pub ...

  5. 构造Json对象串工具类

    import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.Property ...

  6. Java下利用Jackson进行JSON解析和序列化

    Java下利用Jackson进行JSON解析和序列化   Java下常见的Json类库有Gson.JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行 ...

  7. json处理三部曲之第三曲:利用Gson处理json

    需要导入gson-xxx.jar包 <dependency> <groupId>com.google.code.gson</groupId> <artifac ...

  8. 两种库解析、构造 JSON

    1.用CJSON库 1.1解析Json 需要解析的JSON文件: { "name":"Tsybius", , "sex_is_male":t ...

  9. 利用Ajax和JSON实现关于查找省市名称的二级联动功能

    功能实现的思路:我们经常碰见网上购物时候填写收件地址会用到这个查找省市县的三级联动查找功能,我们可以利用Ajax和JSON技术模拟这个功能,说白了同样是使用Ajax的局部数据更新功能这个特性.因为省市 ...

随机推荐

  1. 使用Github搭建个人博客网站

    1 新建一个repo,创建一个没有父节点的分支gh-pages(github规定,只有该分支中的页面,才会生成网页文件): mkdir jekyll_demo cd jekyll_demo git i ...

  2. PowerDesigner中逆向工程将数据库中comment赋值到name

    '------------------------------------------------------------ ' '脚本功能: ' PowerDesigner中逆向工程完成后,将数据库中 ...

  3. 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上)【转载】

    转自: DBAplus社群 http://www.toutiao.com/m5762164771/ 迄今最安全的MySQL?细数5.7那些惊艳与鸡肋的新特性(上) - 今日头条(TouTiao.com ...

  4. IE7&IE8不支持rgba的方法

    使用滤镜功能 filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#BF000000,endColorstr=#BF0000 ...

  5. Delphi MaskEdit用法(转)

    源:http://www.cnblogs.com/zhangzhifeng/archive/2011/10/12/2208640.html MaskEdit是用来建立编辑框的,但它与Edit编辑框可以 ...

  6. postgres 错误duplicate key value violates unique constraint 解决方案

    SELECT setval('tablename_id_seq', (SELECT MAX(id) FROM tablename)+1) 主要是:serial key其实是由sequence实现的,当 ...

  7. 消除SDK更新时的“https://dl-ssl.google.com refused”异常--(转)

    SDK更新时的“https://dl-ssl.google.com refused”错误 Download interrupted: hostname in certificate didn't ma ...

  8. HTML5的兼容问题以及调用js文件的方法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. ARMs3c2440开发板挂接NFS服务

    1.修改IP地址,使虚拟机,电脑PC机.开发板位于同一个网段,开发板网线与电脑网络接口连接,如PC:ip 192.168.0.112 255.255.255.0 虚拟机 192.168.0.8 255 ...

  10. HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者(基础巴什博奕)

    最最最基础巴什博奕 #include<stdio.h> #include<iostream> #include<cstring> #include<cmath ...