问题起因

以往都是直接用构造数组的形式构造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. java 线程安全

    要认识java线程安全,必须了解两个主要的点:java的内存模型,java的线程同步机制.特别是内存模型,java的线程同步机制很大程度上都是基于内存模型而设定的. 浅谈java内存模型: 不同的平台 ...

  2. HDU - 1865 1string(大数)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/121397#problem/F http://acm.hdu.edu.cn/showproblem.php?pi ...

  3. CodeForces 678A Johny Likes Numbers

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> ...

  4. Servlet程序开发--实例操作:MVC设计模式应用

    以前做过一个登录程序,是用JSP+JavaBean完成的,最大的问题,JSP文件内容太多了. 1. VO 2. DBC 3. DAO 3.1 impl 3.2 proxy 4. Factory 5. ...

  5. Android面试经验1

    1,java基本数据类型. Byte.short.int.long.float.double.char.boolean. 1         2       2     2      4       ...

  6. How to install / setup /upgrade PHP 5.5.x on Ubuntu 12.04 LTS

    原文:http://www.dev-metal.com/how-to-setup-latest-version-of-php-5-5-on-ubuntu-12-04-lts/ 最近遇到了要在ubunt ...

  7. list实例应用

    Java代码如下: package Test01; import java.util.ArrayList; import java.util.List; public class Test02 { p ...

  8. Java 六种异常处理的陋习(转)

    Java 六种异常处理的陋习 原文链接:  http://www.cnblogs.com/Android-and-android/archive/2013/05/02/3054469.html 你觉得 ...

  9. CentOS 6.2 安装vsftpd 服务器(转)

    CentOS 6.2 安装vsftpd 服务器 本人的CentOS 6.2是安装在win 2008 R2 server 的 Hyper-V 虚拟机中.centos使用光盘安装,以最小模式安装,完成后用 ...

  10. CodeForces 158C - Cd and pwd commands(模拟)

    这个题我们又把题意理解错了,队友翻译了以后给我解释,我问这个直接一个单词开头的是要找到这个文件夹吗,他说是,然后我就呵呵了..奔着树形结构去和字符串维护就去了...做了好久都没模拟出来,感觉做出来的人 ...