关于 JavaScript中的JSON你还记得多少 忘记了再看一遍吧

序言

JavaScript Object Notation,简称JSON,是一种轻量级的数据交换格式,广泛应用于各种编程语言之间的数据交互。JSON源于JavaScript的对象字面量表示法,但它已经演变成一种独立于编程语言的通用数据格式,因此在不同语言之间可以轻松地进行解析和生成。

JSON的基本结构

JSON的基本单位是对象数组

对象是一个无序的键值对集合,由花括号 {} 包围。键和值之间使用冒号 : 分隔,键值对之间使用逗号 , 分隔。例如:

json 复制代码
{
  "name": "John",
  "age": 30,
  "city": "New York"
}

数组由方括号 [] 包围,其中的元素之间同样使用逗号 , 分隔。数组可以包含各种类型的值,包括字符串、数字、布尔值、对象和其他数组。

json 复制代码
["apple", "orange", "banana"]

JSON中的值可以是字符串、数字、布尔值、对象、数组,以及特殊值 null

json 复制代码
{
  "name": "Alice",
  "age": 25,
  "isStudent": true,
  "grades": [90, 85, 92],
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  },
  "isActive": null
}

JSON的语法规则

  • 键和字符串值必须使用双引号。
  • 字符串必须使用双引号。
  • 数字、布尔值和null不需要引号。

这些规则使得JSON的结构清晰,易于阅读和解析。

JSON的方法

在JavaScript中,我们可以使用两个主要的JSON方法进行数据的序列化反序列化

JSON.parse():从字符串到对象的转化

JSON.parse() 方法用于将JSON字符串解析为JavaScript对象。这个过程称为解析反序列化。下面是一个简单的例子:

js 复制代码
var jsonString = '{"name": "John", "age": 30}';
var jsonObject = JSON.parse(jsonString);
console.log(jsonObject);

在这个例子中,jsonString 是一个包含姓名和年龄信息的JSON字符串,JSON.parse() 将其转换为JavaScript对象 jsonObject。解析后,我们可以直接访问对象的属性:

js 复制代码
console.log(jsonObject.name); // 输出: John
console.log(jsonObject.age);  // 输出: 30

解析时的可选参数:reviver

JSON.parse() 还接受一个可选的 reviver 参数,允许我们在解析过程中对结果进行修改。reviver 是一个函数,接收两个参数:属性键属性值。我们可以根据需要修改属性值,或者在特定条件下丢弃某些属性。

js 复制代码
var jsonString = '{"name": "John", "age": 30}';
var reviver = function(key, value) {
  if (key === "age") {
    return value + 5;
  }
  return value;
};
var jsonObject = JSON.parse(jsonString, reviver);
console.log(jsonObject.age);  // 输出: 35

在这个例子中,reviver 函数检查属性键是否为 "age",如果是,则将其值加上 5。这种灵活性使得在解析JSON数据时能够执行更复杂的操作。

JSON.stringify():从对象到字符串的转化

JSON.stringify() 方法用于将JavaScript对象转换为JSON字符串。这个过程称为序列化。下面是一个简单的例子:

JS 复制代码
var person = { name: "John", age: 30 };
var jsonString = JSON.stringify(person);
console.log(jsonString);

在这个例子中,person 是一个包含姓名和年龄信息的JavaScript对象,JSON.stringify() 将其转换为JSON字符串 jsonString

序列化时的可选参数:replacer 和 space

JSON.stringify() 提供了两个可选参数,replacerspace,用于控制序列化的过程。

  • replacer: 可以是一个函数数组,用于转换结果。如果是函数 ,该函数将被逐个调用,接收属性键和属性值,返回新的属性值。如果是数组,只有数组中列出的属性会被包含在最终的JSON字符串中。
js 复制代码
    var person = { name: "John", age: 30, gender: "male" };
    var replacer = function(key, value) {
      if (key !== "gender") {
        return value;
      }
    };
    var jsonString = JSON.stringify(person, replacer);
    console.log(jsonString);
  • space: 用于美化输出的空格数或字符串。
js 复制代码
   var person = { name: "John", age: 30 };
   var jsonString = JSON.stringify(person, null, 2); // 使用2个空格缩进
   console.log(jsonString);

这些参数使得我们能够更灵活地控制序列化的结果,适应不同的需求。

结语

JSON在现代Web开发中扮演着重要的角色,而JavaScript中的 JSON.parse()JSON.stringify() 方法为处理JSON数据提供了简单而强大的工具。通过深入了解这两个方法及其可选参数,我们能够更好地理解和利用JSON在数据交换中的优势,使得前端和后端之间的数据传递更加高效和可靠。

如果这篇文章感觉对你有用的话,给作者一点鼓励点个赞吧♥

这个专栏在持续更新更多有用的干货中,关注➕收藏 Coding不迷茫

所有文章的源码,给作者的开源git仓库点个收藏吧: gitee.com/cheng-bingw...

更多干货内容:HTML5中的 Transition 与 Animation: 创造流畅的用户体验

相关推荐
yqcoder6 分钟前
vue2 和 vue3 生命周期的区别
前端·javascript·vue.js
excel17 分钟前
前端人必备的 JavaScript API 全面指南(含 postMessage、File、Stream、Web 组件等)
前端
m0_738120725 小时前
CTFshow系列——命令执行web53-56
前端·安全·web安全·网络安全·ctfshow
Liu.7747 小时前
uniappx鸿蒙适配
前端
山有木兮木有枝_8 小时前
从代码到创作:探索AI图片生成的神奇世界
前端·coze
ZXT9 小时前
js基础重点复习
javascript
言兴9 小时前
秋招面试---性能优化(良子大胃袋)
前端·javascript·面试
WebInfra10 小时前
Rspack 1.5 发布:十大新特性速览
前端·javascript·github
雾恋10 小时前
我用 trae 写了一个菜谱小程序(灶搭子)
前端·javascript·uni-app
烛阴11 小时前
TypeScript 中的 `&` 运算符:从入门、踩坑到最佳实践
前端·javascript·typescript