JSON对象的stringify()和parse()方法使用

JSON 格式

JSON 格式(JavaScript Object Notation 的缩写)是一种用于数据交换的文本格式,2001年由 Douglas Crockford 提出,目的是取代繁琐笨重的 XML 格式。

相比 XML 格式,JSON 格式有两个显著的优点:书写简单,一目了然;符合 JavaScript 原生语法,可以由解释引擎直接处理,不用另外添加解析代码。所以,JSON 迅速被接受,已经成为各大网站交换数据的标准格式,并被写入标准。

每个 JSON 对象就是一个值,可能是一个数组或对象,也可能是一个原始类型的值。总之,只能是一个值,不能是两个或更多的值。

JSON对值的类型和格式有很严格的要求:

1.复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
2.原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。
3.字符串必须使用双引号表示,不能使用单引号。
4.对象的键名必须放在双引号里面。
5.数组或对象最后一个成员的后面,不能加逗号。

JSON 对象

JSON对象是 JavaScript 的原生对象,用来处理 JSON 格式数据。它有两个静态方法:JSON.stringify()JSON.parse()

JSON.stringify()方法用于将一个值转为 JSON 字符串。该字符串符合 JSON 格式,并且可以被JSON.parse()方法还原。

JSON.stringify()

JSON.stringify() 方法将一个值转换为json字符串

语法格式:JSON.stringify(value[, replacer [, space]])

value表示将要序列化成 一个 JSON 字符串的值。

replacer 可选,如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理;如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的 JSON 字符串中;如果该参数为 null 或者未提供,则对象所有的属性都会被序列化。

space 可选,指定缩进用的空白字符串,用于美化输出(pretty-print);如果参数是个数字,它代表有多少的空格;上限为 10。该值若小于 1,则意味着没有空格;如果该参数为字符串(当字符串长度超过 10 个字母,取其前 10 个字母),该字符串将被作为空格;如果该参数没有提供(或者为 null),将没有空格。

1.JSON.stringify(value)

let arr1 = ["one","two","three"]
let json1 = JSON.stringify(arr1)
console.log(json1) // ["one","two","three"]

2.JSON.stringify(value,replace)

JSON.stringify() 可以接受一个数组,作为第二个参数,用于指定参数对象的哪些属性需要转换为字符串.

 var obj = {
  'prop1':'prop1',
  'prop2':'prop2',
  'prop3':'prop3'
 }
console.log(JSON.stringify(obj))
console.log(JSON.stringify(obj,['prop1','prop2']))

在这里插入图片描述

tips:其实第二个参数就相当于自选一些参数然后转换为JSON

3.JSON.stringify(value,replace,space)

JSON.stringify() 的第三个参数用来增加返回的JSON字符串的可读性

console.log(JSON.stringify({p1: 1,p2: 2},null,'\t'))
console.log(JSON.stringify({p1:1,p2:2},null,2))

在这里插入图片描述

tips:如果第三个参数为数字,那么则表示在每个属性前面添加的空格(最多不能超过十个)

4.注意的点

JSON.stringify() 会将对象的属性 中的undefined 函数 xml对象会被过滤

let st = {
    name:undefined,
    showInfo:function(){}
}
console.log( JSON.stringify(st)) // {}

如果数组的成员是undefined 函数,xml对象则将这些值转换为null

let arr2 = [undefined,function(){}]
console.log(JSON.stringify(arr2)) // [null,null]

正则对象也会被转换为空对象

console.log(JSON.stringify(/foo/)) //{}

在这里插入图片描述

即使用JSON.stringfiy()时,需要注意给方法里面传递的值对象。

JSON.parse()

JSON.parse() 方法用于将JSON字符串转换成对应的值

语法格式:JSON.parse(text[, reviver])

text,要被解析成 JavaScript 值的字符串

reviver 可选,转换器,如果传入该参数 (函数),可以用来修改解析生成的原始值,调用时机在 parse 函数返回之前。

JSON.parse('{}') // {} 对象
JSON.parse('"true"') // "true" 字符串
JSON.parse('true') // true 布尔值
console.log(JSON.parse('{"name":"张三"}')) // 对象 {name:'张三'}

在这里插入图片描述


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杀死一只知更鸟debug

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值