JSON in JavaScript
来源:互联网 发布:链表反转 递归java 编辑:程序博客网 时间:2024/05/18 03:11
http://blog.csdn.net/xujie3/article/details/52954940
工作中做了几款自动化测试工具都是跟日志读取相关,日志格式又大多数都是JSON,所以这里把常用的JS操作JSON的方法做了总结:
一、概念简介
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。
在JSON中,有两种结构:对象和数组。
1.对象
一个对象以“{”开始,“}”结束,“key/value”之间运用 “,”分隔。
2.数组
数组是值的有序集合。一个数组以“[”开始,“]”结束。值之间运用 “,”分隔。
二、JSON对象和JSON字符串的转换
在数据传输过程中,JSON是以字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:
JSON字符串:
JSON对象:
1、JSON字符串转化JSON对象
2、JSON对象转化JSON字符串
三、JSON的输出美化
上一节讲到了将JSON转化为字符串可以用JSON.stringify() 方法,stringify还有个可选参数space,可以指定缩进用的空白字符串,用于美化输出(pretty-print);
space参数是个数字,它代表有多少的空格;上限为10。该值若小于1,则意味着没有空格;如果该参数没有提供(或者为null)将没有空格。
我们看下代码:
待美化的JSON:
美化后的效果:
四、JSON字符串的替换
工作经常遇到这样的字符串,如下:
需要经过替换后,才能从字符串转化成JSON对象。这里我们需要用JS实现replaceAll的功能, 将所有的 ' \\" ' 替换成 ' " ' .
代码如下,这里的gm是固定的,g表示global,m表示multiple:
替换后的效果如下:
五、遍历JSON对象和JSON数组
1、遍历JSON对象代码如下:
2、遍历JSON数组代码如下:
六、递归遍历
为了实现一些复杂功能常常需要递归遍历JSON对象,这里给出两个递归的例子,希望能给大家参考递归的写法。
1、第一个例子是递归遍历JSON,遇到数组的时候,数组中有超过一个对象,删除第一个对象之后的所有对象
举个例子,原始JSON如下:
期望处理后的JSON如下:
递归代码如下:
2、第二个例子是递归查找目标节点(节点id为targetId,有且只有一个),找到后把targetChildren赋值给节点的children,
举个例子,原始JSON如下,查找的目标节点id为5:
targetChildren为
期望最后处理的JSON结果为:
递归代码如下:
阅读全文
0 0
- JSON in JavaScript
- JSON in JavaScript
- json in javascript
- JSON in JavaScript
- javaScript JSON 遍历(for in)
- JSON详细学习之JSON in JavaScript
- Cross-browser JSON Serialization in JavaScript
- Convert between JSON and String in Javascript
- json to obj and obj to json in javascript
- An Introduction to JavaScript Object Notation (JSON) in JavaScript and .NET
- 【javascript】JSON
- Javascript JSON
- javascript json
- JavaScript-JSON
- JavaScript JSON
- javascript JSON
- javascript------JSON
- [Javascript] Json
- CSS:谈谈栅格布局
- OpenJudge 3531 判断整除
- 打开EXCEL运行脚本,报无法运行宏问题
- 离散基础 (16). 赌博,看数学怎么说!
- 如何使用CSS栅格布局创建一个简单页面布局
- JSON in JavaScript
- activiti+testng批量测试用例-请假流程
- 跟着写一个CSS栅格布局
- 怎么求编译原理自顶向下分析的first集follow集和select
- 在控制器“xxxx”上找不到与该请求匹配的操作
- Android Studio 下apk打包
- C++引用计数技术及智能指针的简单实现
- 【剑指offer】面试题 6:从尾到头打印链表
- 我遇到的问题:ClassNotFoundException: org.springframework.web.context.ContextLoaderListener