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

简介: 本文阐述了JSON对象的`stringify()`和`parse()`方法的用法,包括如何将JavaScript对象转换为JSON字符串,以及如何将JSON字符串解析回JavaScript对象,并讨论了转换过程中需要注意的事项。

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:'张三'}

在这里插入图片描述


相关文章
|
5月前
|
JSON 中间件 Java
【GoGin】(3)Gin的数据渲染和中间件的使用:数据渲染、返回JSON、浅.JSON()源码、中间件、Next()方法
我们在正常注册中间件时,会打断原有的运行流程,但是你可以在中间件函数内部添加Next()方法,这样可以让原有的运行流程继续执行,当原有的运行流程结束后再回来执行中间件内部的内容。​ c.Writer.WriteHeaderNow()还会写入文本流中。可以看到使用next后,正常执行流程中并没有获得到中间件设置的值。接口还提供了一个可以修改ContentType的方法。判断了传入的状态码是否符合正确的状态码,并返回。在内部封装时,只是标注了不同的render类型。再看一下其他返回的类型;
297 3
|
9月前
|
JSON IDE Java
鸿蒙开发:json转对象插件回来了
首先,我重新编译了插件,进行了上传,大家可以下载最新的安装包进行体验了,还是和以前一样,提供了在线版和IDE插件版,两个选择,最新的版本,除了升级了版本,兼容了最新的DevEco Studio ,还做了一层优化,就是针对嵌套对象和属性的生成,使用方式呢,一年前的文章中有过详细的概述,这里呢也简单介绍一下。
306 4
鸿蒙开发:json转对象插件回来了
|
JSON 人工智能 算法
探索大型语言模型LLM推理全阶段的JSON格式输出限制方法
本篇文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
2106 48
|
JSON 人工智能 算法
探索LLM推理全阶段的JSON格式输出限制方法
文章详细讨论了如何确保大型语言模型(LLMs)输出结构化的JSON格式,这对于提高数据处理的自动化程度和系统的互操作性至关重要。
3044 52
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
2166 7
|
JSON JavaScript 前端开发
js如何格式化一个JSON对象?
js如何格式化一个JSON对象?
617 3
|
6月前
|
机器学习/深度学习 JSON 监控
淘宝拍立淘按图搜索与商品详情API的JSON数据返回详解
通过调用taobao.item.get接口,获取商品标题、价格、销量、SKU、图片、属性、促销信息等全量数据。
|
5月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
5月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南