json.stringify()是干嘛的
json.stringify()用于将JavaScript对象或值转换为JSON字符串,如果指定了一个replacer函数,则可以选择性地替换值,或者指定的replacer是数组,则可选择性地仅包含数组指定的属性。
相关推荐:《javascript视频教程》
JavaScript JSON.stringify()
JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。
语法
JSON.stringify(value[, replacer[, space]])
参数说明:
value:必需, 要转换的 JavaScript 值(通常为对象或数组)。
replacer:可选。用于转换结果的函数或数组。
如果 replacer 为函数,则 JSON.stringify 将调用该函数,并传入每个成员的键和值。使用返回值而不是原始值。如果此函数返回 undefined,则排除成员。根对象的键是一个空字符串:""。
如果 replacer 是一个数组,则仅转换该数组中具有键值的成员。成员的转换顺序与键在数组中的顺序一样。
space:可选,文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 space 大于 10,则文本缩进 10 个空格。space 也可以使用非数字,如:\t。
返回值:
返回包含 JSON 文本的字符串。
实例说明
注意:以下的输出结果都是string类型的,为了容易看就没有用单引号‘’表明是字符串类型
1、只有一个参数
参数为对象:
var students = new Array(); students[0] = "pika"; students[1] = "hello"; students[2] = "hey"; var json = JSON.stringify(students); alert(json);
输出结果:
["pika","hello","hey"]
如果不用JSON.stringify()函数,直接alert(students),那么
输出结果:
pika,hello,hey
从这里到对比可以比较直观的看出JSON.stringify()函数的作用啦
看一下其他例子:
JSON.stringify({}); // 输出结果:{} JSON.stringify(true); // 输出结果:true JSON.stringify("foo"); // 输出结果:"foo" JSON.stringify([1, "false", false]); // 输出结果:[1,"false",false] JSON.stringify({ x: 5 }); // 输出结果:{"x":5} JSON.stringify({x: 5, y: 6}); //输出结果:{"x":5,"y":6} JSON.stringify([new Number(1), new String("false"), new Boolean(false)]); //输出结果:[1,"false",false]
从这些例子中可以看出:布尔值、数字、字符串的包装对象在序列化过程中会自动转换成对应的原始值
再看一下其他例子:
JSON.stringify({x: undefined, y: Object, z: Symbol("")}); // 输出结果:{} JSON.stringify([undefined, Object, Symbol("")]); // 输出结果:[null,null,null]' JSON.stringify({[Symbol("foo")]: "foo"}); // 输出结果:{} JSON.stringify({[Symbol.for("foo")]: "foo"}, [Symbol.for("foo")]); // 输出结果:{} JSON.stringify( {[Symbol.for("foo")]: "foo"}, function (k, v) { if (typeof k === "symbol"){ return "a symbol"; } } ); //输出结果:undefined
从这些例子中可以看出:undefined、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 null(出现在数组中时)
再看最后一个例子
JSON.stringify( Object.create( null, { x: { value: 'x', enumerable: false }, y: { value: 'y', enumerable: true } } ) );
从例子中可以看出:不可枚举的属性会被忽略
2、有两个参数,第二个参数为函数
函数例子:
function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; }
可以看出有一个key值,一个value值,还记得一开始说的第二个参数作key值吗?
实例:
function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; } var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7}; var jsonString = JSON.stringify(foo, replacer); //输出结果:{"week":45,"month":7}
就是把第一个值传去函数进行相关的处理
2、有两个参数,第二个参数为数组
第一个参数为数组
var students = new Array(); students[0] = "pika"; students[1] = "hello"; students[2] = "hey"; var stu= new Array(); stu[0] = "how"; stu[1] = "are"; stu[2] = "u"; var json = JSON.stringify(students,stu); alert(json); //输出结果:["pika","hello","hey"]
结果是只有第一个值序列化了,第二个被忽略了
第一个参数为对象
var students = new Object(); students.name = "pika"; students.age = 19; students.qq = "12345678"; var stu= new Array(); stu[0] = "name"; stu[1] = "qq"; var json = JSON.stringify(students,stu); alert(json); //输出结果:{"name":"pika","qq":"12345678"}
数组的值代表将被序列化成JSON字符串的属性名
stu数组没有“age”,所以students对象的“age”属性没有显示
有三个参数
前面说到第三个参数就是用来缩进或者直接添加字符串在序列化对象的前面,所以直接看例子就行啦,注意最多只能10个缩进或字符
JSON.stringify({ a: 2 }, null, " "); // 输出结果:{\n "a": 2\n} JSON.stringify({ uno: 1, dos : 2 }, null, '\t') /* 输出结果: { "uno": 1, "dos": 2 } */ var students = new Object(); students.name = "pika"; students.age = 19; students.qq = "12345678"; var stu= new Array(); stu[0] = "name"; stu[1] = "qq"; var json = JSON.stringify(students,stu,"test") alert(json); /* 输出结果: { test"name": "pika", test"qq": "12345678" } */
总结
最后来总结一下,JSON.stringify()函数是用来序列化对象的,无论输入什么,输出的都是字符串类型,可以按自己的需求来定制如何序列化,输出结果是怎样的格式
更多编程相关知识,请访问:编程学习!!
以上就是json.stringify()是干嘛的的详细内容,更多请关注其它相关文章!
上一篇: iview组件事件额外传递参数的代码示例
下一篇: 前端react是什么
推荐阅读
-
开发一款app,php做服务端,有一个功能是附近的人和发布动态的时候发布自己的定位,php世界有啥好的方案去做这些吗?
-
新增加的内容是如何将div的scrollbar自动移动最下面_javascript技巧
-
win10系统新建跨区卷是灰色怎么办? win10磁盘新建跨区卷的技巧
-
JSP实现左边是树形菜单,右边是对应的内容显示_html/css_WEB-ITnose
-
PHP中给AJAX传回的数据类型是JSON的一点困惑
-
水土不服拉肚子怎么办?听说吃老家的土治水土不服是真的吗
-
为什么单例模式是邪恶的(译)_PHP教程
-
为什么苹果新语言 Swift 的 RC4 运算效能是 Python 的 220 倍?
-
个小网站怎么快速获取好排名,收录的时候是契机
-
php 读取 blob 乱码 blob中存的是普普通通文本,有中文