JSON

◼ 在目前的开发中,JSON是一种非常重要的数据格式,它并不是编程语言,而是一种可以在服务器和客户端之间传输的数据格式。
◼ JSON的全称是JavaScript Object Notation(JavaScript对象符号):
    JSON是由Douglas Crockford构想和设计的一种轻量级资料交换格式,算是JavaScript的一个子集;
    但是虽然JSON被提出来的时候是主要应用JavaScript中,但是目前已经独立于编程语言,可以在各个编程语言中使用;
    很多编程语言都实现了将JSON转成对应模型的方式;
◼ 其他的传输格式:
    XML:在早期的网络传输中主要是使用XML来进行数据交换的,但是这种格式在解析、传输等各方面都弱于JSON,所以目前已经很
    少在被使用了;
    Protobuf:另外一个在网络传输中目前已经越来越多使用的传输格式是protobuf,但是直到2021年的3.x版本才支持JavaScript,所
    以目前在前端使用的较少;
◼ 目前JSON被使用的场景也越来越多:
    网络数据的传输JSON数据;
    项目的某些配置文件;
    非关系型数据库(NoSQL)将json作为存储格式;

JSON基本语法

◼ JSON的顶层支持三种类型的值:
    简单值:数字(Number)、字符串(String,不支持单引号)、布尔类型(Boolean)、null类型;
    对象值:由key、value组成,key是字符串类型,并且必须添加双引号,值可以是简单值、对象值、数组值;
    数组值:数组的值可以是简单值、对象值、数组值;

例如:

123

{
"name":"hdc",
"age":"21",
"friend":{
"name":"kebo",
}
}
数组值
[
123,
"hdc",
{
"name":"kebo"
}
]

JSON序列化

◼ 某些情况下我们希望将JavaScript中的复杂类型转化成JSON格式的字符串,这样方便对其进行处理:
  比如我们希望将一个对象保存到localStorage中;
  但是如果我们直接存放一个对象,这个对象会被转化成[object Object] 格式的字符串,并不是我们想要的结果;
  info	[object Object]
◼ 那么上面的代码我们可以通过如下的方法来使用:
  // 1.将obj对象进行序列化
  var objJSONString = JSON.stringify(obj)
  console.log(objJSONString)
  // 2.将对象存储到localStorage
  localStorage.setItem("info",objJSONString)
var item =  localStorage.getItem("info")
  console.log(typeof item)

  // 3.将字符串转为对象(反序列化)
  var newObj = JSON.parse(item)
  console.log(newObj)

Stringify的参数replace

 ◼ JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串:
  如果指定了一个replacer 函数,则可以选择性地替换值;
  如果指定的replacer 是数组,则可选择性地仅包含数组指定的属性;
  // 1.replacer参数
// var objJSONString = JSON.stringify(obj,function(key,value){
  
//   if (key === "name" ){
//     return "webKing"
//   }
//   return value
// },"")
// 2.space参数  
// var objJSONString = JSON.stringify(obj,null,4)
// console.log(objJSONString)
// 3.如果对象本事有实现toJSON方法 那么直接调用toJSON方法
// var objJSONString = JSON.stringify(obj)
// console.log(objJSONString)
var objJSONString = JSON.stringify(obj,["name","age"])
console.log(objJSONString)//[name:"hdc",age:"21"]

parse方法

◼ JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。
  提供可选的reviver 函数用以在返回之前对所得到的对象执行变换(操作)。 
案例:
      var obj = {
      name : "hdc",
      age:18,
      }
      var objJSONString = JSON.stringify(obj)
      console.log(objJSONString)

      var newObj = JSON.parse(objJSONString,function(key,value){
        if(key == 'age'){
          return value + 2
        }
        return value
      })
      console.log(newObj)//{name: 'hdc', age: 20} 
    </script>
◼ JSON的方法可以帮我们实现对象的深拷贝:
但是目前我们还没有了解什么是对象的拷贝、浅拷贝、深拷贝的概念;
我们会在JavaScript高级中学习;

Storage

posted @ 2024-10-21 09:56  韩德才  阅读(11)  评论(0编辑  收藏  举报