JSON.stringify()
概述
JSON.stringify()
方法可以将任意的 JavaScript 值序列化成 JSON 字符串。
语法
JSON.stringify(value[, replacer [, space]])
参数
value
- 将要序列化成 JSON 字符串的值。
replacer
可选- 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中。关于该参数更详细的解释和示例,请参考使用原生的 JSON 对象一文。
space
可选- 指定缩进用的空白字符串,用于美化输出(pretty-print)。
具体可以参考 MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
一、通常情况下,我们只使用如下代码进行简单的 JSON 字符串化:
var JSONobj = {"name" : "value","arr" : ['str1','str2']};
console.log(JSON.stringify(JSONobj));
//结果为{"name":"value","arr":["str1","str2"]}
二、实际上,第二个参数也有很重要的用途,比如对对象内的key-value 依次进行处理后转换为字符串:
var JSONobj = {"name" : "value","name2":"value2","arr" : ['str1','str2',{'arrObj' : 'arrObj'}]};
JSON.stringify(JSONobj,function(key,value){
console.log(key,value)
});
//结果为:JSONobj对象(value值),key无值
三、当需要展示的 json 串对用户友好,增加可读性时,可以使用第三个参数:
var JSONobj = {"name" : "value","arr" : ['str1','str2',{'arrObj' : 'arrObj'}]};
JSON.stringify(JSONobj, null, '\t');
/* "{
"name": "value",
"arr": [
"str1",
"str2",
{
"arrObj": "arrObj"
}
]
}" */
实际上以上结果经过了两次处理:
1. 为每一个 ‘{’、‘}’、value 后的‘,’ 末尾添加一个\n
2. 为每一个一级 key 前面添加一个\t (tab制表符,即本例中第三个参数值),二级 key 前面加两个\t,以此类推。
为了更清晰的验证以上两点,进行如下测试:
var JSONobj = {"name" : "value","arr" : ['str1','str2',{'arrObj' : 'arrObj'}]};
JSON.stringify(JSONobj, null, '\t').replace(/\n/g,'|--N--|').replace(/\t/g,'|--T--|');
//结果为"{|--N--||--T--|"name": "value",|--N--||--T--|"arr": [|--N--||--T--||--T--|"str1",|--N--||--T--||--T--|"str2",|--N--||--T--||--T--|{|--N--||--T--||--T--||--T--|"arrObj": "arrObj"|--N--||--T--||--T--|}|--N--||--T--|]|--N--|}"
JSON.stringify()的更多相关文章
- 有意思的JSON.parse()、JSON.stringify()
前言 现在JSON格式在web开发中非常重要,特别是在使用ajax开发项目的过程中,经常需要将后端响应的JSON格式的字符串返回到前端,前端解析成JS对象值(JSON 对象),再对页面进行渲染. 在数 ...
- JSON.parse()和JSON.stringify()(转载)
parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...
- 关于对JSON.parse()与JSON.stringify()的理解
JSON.parse()与JSON.stringify()的区别 JSON.parse()[从一个字符串中解析出json对象] 例子: //定义一个字符串 var data='{"nam ...
- JSON之—— JSON.parse()和JSON.stringify() (插曲)
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46391269 parse用于从一个字符串中解析出json对象,如 var str ...
- Python模块:shutil、序列化(json&pickle&shelve)、xml
shutil模块: 高级的 文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fscr,fdst [, length]) # 将文件内容拷贝到另一个文件中 import shu ...
- qs.parse()、qs.stringify()、JSON.parse()、JSON.stringify()使用方法
一.JSON.parse(用于从一个字符串中解析出json 对象)ps:单引号写在{}外,每个属性都必须双引号,否则会抛出异常 let str = '[{"field":" ...
- 前端js传值JSON.stringify(obj)
用bootstrap-talbe前端传值 首先直接传肯定是不行的; 其次做一个全局变量也不行,因为这里的问题的是用bootstrap-table进行生成的操作HTML,从这里datass = row ...
- JSON相关(一):JSON.parse()和JSON.stringify()
parse用于从一个字符串中解析出json对象,如 var str = '{"name":"huangxiaojian","age":&qu ...
- JSON.stringify语法解析(自己留存)
语法: JSON.stringify(value [, replacer] [, space]) value:是必选字段.就是你输入的对象,比如数组,类等. replacer:这个是可选的.它又分为2 ...
随机推荐
- 解决scrollview上的menu拖动问题以及menu item在可视区外仍能触发的问题
最近在做项目发现一个让人很头疼的问题 qiick-3.5 引擎 lua 版本 一 问题如下: ① 在Cocostudio中做界面 使用 scrollview 控件 ,然后 scrollview 控件的 ...
- WM_COPYDATA进程间通信方案
连续在两个公司使用WM_COPYDATA实现进程间通信了,整理一下 具体步骤: 一. 进程A通过ShellExecute启动进程B, 将用于通信的窗口句柄hWndA(已强转为int值)通过命令行参 ...
- js 中将日期转换为星期需要注意的
new Date(strDate); 中strDate需要是1998/10/30这样的格式,如果是1998-10-30的格式,不一定旧版本的web能兼容
- [译] jQuery 3 有哪些新东西
转自:https://github.com/cssmagic/blog/issues/59 jQuery 的横空出世,至今已有十个年头了,而它的长盛不衰显然不是没有理由的.jQuery 提供了极为友好 ...
- ip_conntrack table full dropping packet错误的解决方法
ip_conntrack表满导致的,iptables开启后会加载ip_conntrack模块,来跟踪包.默认情况下ip_conntrack_max大小为65536. 查看ip_conntrack最大大 ...
- P1041 传染病控制
#include <bits/stdc++.h> using namespace std; const int maxn = 301; std::vector<int> son ...
- android模拟器没有键盘的解决方法
刚开始使用android模拟器的时候,发现自己创建的AVD启动后没有出现侧边的键盘,在网上搜索后,发现很多人都有这个问题,也有文章说直接使用PC上的键盘,因为有对应的快捷键.但是,没有键盘,始终不爽! ...
- java 给指定时间加上天数or给当前日期加天数
给指定日期加上天数: /** * 指定日期加上天数后的日期 * @param num 为增加的天数 * @param newDate 创建时间 * @return * @throws ParseExc ...
- docker好文收藏
深入浅出Docker(一):Docker核心技术预览 2. 核心技术预览 Docker核心是一个操作系统级虚拟化方法, 理解起来可能并不像VM那样直观.我们从虚拟化方法的四个方面:隔离性.可配额/可度 ...
- Python之路-python(css布局、JavaScript)
CSS布局 JavaScript css布局: 后台管理界面一:(左右标签都有下来菜单) 利用position: absolute;让某个标签固定在具体位置,然后使用overflow: auto;属性 ...