深入浅出JS—25小JSON,大用途

JSON是JavaScript Object Notation的缩写,翻译为JavaScript对象符号。和JavaScript不同,JSON不是一种编程语言,而是存储数据的一种格式,被广泛用于前后端数据传递、项目配置文件中

1. JSON数据类型

.json结尾的文件顶层可以存储三大类的数据

  • 基本类型
    字符串、数字、布尔类型、null(不能存undefined)
  • 数组类型
// a.json
[
  "name1",
  "name2",
]
  • 对象类型
// b.json
{
  "name": "xs"
}

2. JSON类型与JavaScript类型转换

  • JSON.stringify()
    JavaScript类型变为JSON字符串
    可以序列化JS对象数组和基本类型,转化为JSON类型的字符串(区分JS类型的字符串)
    注意:在序列化对象时,对象的方法会被忽视
  • JSON.parse()
    解析JSON类型的字符串,转换为JavaScript类型

3 JSON.stringify方法

JSON.stringify( value, repalcer?, space?)

  • 第二个参数replacer使用
    为数组时:指的是要序列化的元素
    为函数时:为监听序列化的回调函数
const obj = {
  name: "xs",
  age: 18,
  friends: ["aaa", "bbb"],
};

// 1为数组,元素为要系列化键值对的key
const objString1 = JSON.stringify(obj, ["name", "friends"]);
console.log(objString1); // {"name":"xs","friends":["aaa","bbb"]}

// 2为函数,监听序列化过程
const objString2 = JSON.stringify(obj, (key, value) => {
  if (key === "age") {
    return value + 1;
  }
  return value;
});
console.log(objString2); // {"name":"xs","age":19,"friends":["aaa","bbb"]}

  • 第三个参数space使用
    为数字时:指的是缩进的空格数
    为字符串时:指的是缩进用该字符串占位
const objString3 = JSON.stringify(obj, null, 2);
console.log(objString3);
// 输出结果有缩进2个空格
{
  "name": "xs",
  "age": 18,
  "friends": [
    "aaa",
    "bbb"
  ]
}

4 JSON.parse方法

JSON.parse(value, reviver)
reviver指的是解析时的回调函数

const info = JSON.parse(objString1, (key, value) => {
  if (key === "age") {
    return value + 10;
  }
  return value;
});

console.log(info); // { name: 'xs', age: 28, friends: [ 'aaa', 'bbb' ] }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值