JSON与storage

news2024/11/23 18:40:26

JSON

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是字符串类型,并且必须添加双引号,值可以是简单值、对象值、数组值;
 数组值:数组的值可以是简单值、对象值、数组值;
普通json不支持注释

 JSON序列化

◼ 某些情况下我们希望将JavaScript中的复杂类型转化成JSON格式的字符串,这样方便对其进行处理:
 比如我们希望将一个对象保存到localStorage中;
 但是如果我们直接存放一个对象,这个对象会被转化成 [object Object] 格式的字符串,并不是我们想要的结果;

序列化方法

在ES5中引用了JSON全局对象,该对象有两个常用的方法:
 stringify方法:将JavaScript类型转成对应的JSON字符串;
 parse方法:解析JSON字符串,转回对应的JavaScript类型;
◼ 那么上面的代码我们可以通过如下的方法来使用:

 
    // 1.将obj对象进行序列化
    var objJSONString = JSON.stringify(obj)
    console.log(objJSONString)
 
    // 2.将对象存储到localStorage
    localStorage.setItem("info", objJSONString)
     
    var item = localStorage.getItem("info")
    console.log(item, typeof item)
 
    // 3.将字符串转回到对象(反序列化)
    var newObj = JSON.parse(item)
    console.log(newObj)

Stringify的参数replace与space

◼ JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串:
 如果指定了一个 replacer 函数,则可以选择性地替换值;
 如果指定的 replacer 是数组,则可选择性地仅包含数组指定的属性;

◼ JSON.parse() 方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。
 提供可选的 reviver 函数用以在返回之前对所得到的对象执行变换(操作)。
◼ JSON的方法可以帮我们实现对象的深拷贝:

    // 1.replacer参数
     var objJSONString = JSON.stringify(obj, function(key, value) {
       if (key === "name") {
         return "coderwhy"
       }
       return value
     }, "")
     console.log(objJSONString)
 
    // 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)
    console.log(objJSONString)
 
    var newObj = JSON.parse(objJSONString, function(key, value) {
      if (key === "age") {
        return value + 2
      }
      return value
    })
    console.log(newObj)

6.Storage

◼ WebStorage主要提供了一种机制,可以让浏览器提供一种比cookie更直观的key、value存储方式:
 localStorage:本地存储,提供的是一种永久性的存储方法,在关闭掉网页重新打开时,存储的内容依然保留;
 sessionStorage:会话存储,提供的是本次会话的存储,在关闭掉会话时,存储的内容会被清除;

 我们会发现localStorage和sessionStorage看起来非常的相似。
◼ 那么它们有什么区别呢?
 验证一:关闭网页后重新打开,localStorage会保留,而sessionStorage会被删除;
 验证二:在页面内实现跳转,localStorage会保留,sessionStorage也会保留;
 验证三:在页面外实现跳转(打开新的网页),localStorage会保留,sessionStorage不会被保留;
◼ Storage有如下的属性和方法:
◼ 属性:
 Storage.length:只读属性
✓ 返回一个整数,表示存储在Storage对象中的数据项数量;
◼ 方法:
 Storage.key():该方法接受一个数值n作为参数,返回存储中的第n个key名称;
 Storage.getItem():该方法接受一个key作为参数,并且返回key对应的value;
 Storage.setItem():该方法接受一个key和value,并且将会把key和value添加到存储中。
✓ 如果key存储,则更新其对应的值;
 Storage.removeItem():该方法接受一个key作为参数,并把该key从存储中删除;
 Storage.clear():该方法的作用是清空存储中的所有key;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/614192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果震撼发布首款头显,搭配强悍Mac和iOS 17等全新产品,价值25000元!

🌷 博主 libin9iOak带您 Go to New World.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发…

随机过程与排队论(一页纸总结)

参数为 λ 的泊松过程的点间间距是相互独立的随机变量,且服从均值为 1/λ 的 指数 分布。 病人以每小时3人的泊松流到达医院,设该医院只有一个医生服务且容量为无穷,医生服务的时间服从指数分布,并且平均服务一个病人为30分钟&am…

内联函数 C/C++

代码&#xff1a; file1.c #include<stdio.h>void spam(double v); void masp(double w);inline static double square(double); double square(double x) { printf("%s %s %d\n", __FILE__, __func__, __LINE__);return x * x; } int main() {double q …

chatgpt赋能python:Python如何将图片Resize

Python如何将图片Resize 在网页设计和开发过程中&#xff0c;图片大小和质量对于网站性能和用户体验至关重要。网站图片过大会影响页面加载时间&#xff0c;降低用户体验&#xff1b;同时&#xff0c;过小的图片也会影响网站排名&#xff0c;因为搜索引擎的排名算法很重视网站…

chatgpt赋能python:Python如何循环运行程序

Python如何循环运行程序 Python是一种强大的动态语言&#xff0c;具备灵活性和易用性。在编写Python程序时&#xff0c;一个常见的需求是循环运行程序&#xff0c;特别是需要定期执行一些任务的情况下。 本文将介绍如何在Python中实现循环运行程序&#xff0c;并提供一些例子…

chatgpt赋能python:Python如何循环执行

Python如何循环执行 循环是编程中最基本和常用的结构之一。Python作为一门高级编程语言&#xff0c;提供了多种循环执行的方式。在本文中&#xff0c;我们将介绍Python中的循环语句和循环控制语句以及其运行原理。 Python循环语句 for循环 for循环是Python中最常用的循环语…

chatgpt赋能python:Python列表:如何使用Python将数据存入列表中

Python列表&#xff1a;如何使用Python将数据存入列表中 Python是一种广泛使用的编程语言&#xff0c;由于其易于学习和可读性&#xff0c;在数据科学和分析领域中使用广泛。在本文中&#xff0c;我们将讨论如何使用Python将数据存储在列表中。 什么是Python列表&#xff1f;…

语言是世上最奇妙的事物,没有之一

语言是世上最奇妙的事物&#xff0c;没有之一 品牌是靠语言传播的 语言是咋产生的&#xff1f;太玄了 趣讲大白话&#xff1a;猪如果会说话&#xff0c;谁吃谁还不一定呢 【趣讲信息科技187期】 **************************** 《未来简史》的作者说 人有了语言&#xff0c;就有…

Object类和Java中内置的一些接口

文章目录 一、Object类1.1Object类中的方法1.1.1toString()方法1.1.2equals()方法1.1.3hashCode()方法 二、Java中内置的一些接口2.1Comparable<T>接口2.2Cloneable接口 一、Object类 Object类是所有类的父类 1.1Object类中的方法 1.1.1toString()方法 Object类中的t…

Optimize Game Objects骨骼节点优化后SkinMesh以及动态骨骼

为了降低模型动画的性能开销&#xff0c;可以进行骨骼节点优化。 一、接口 unity官方提供了有两种方式可以进行节点优化&#xff1a; 注意当骨骼节点被优化后&#xff0c; Transform节点被剔除&#xff0c;因此需要将挂点等需要用到的节点暴露出来&#xff0c;即下面两个接口…

【高级篇】微服务保护

文章目录 微服务保护1.初识Sentinel1.1.雪崩问题及解决方案1.1.1.雪崩问题1.1.2.超时处理1.1.3.仓壁模式1.1.4.断路器1.1.5.限流1.1.6.总结 1.2.服务保护技术对比1.3.Sentinel介绍和安装1.3.1.初识Sentinel1.3.2.安装Sentinel 1.4.微服务整合Sentinel 2.流量控制2.1.簇点链路2.…

<DB2>《DB2内存详细介绍》

《DB2内存详细介绍》 1 架构图2 主要概念2.1 内存集&#xff08;Memory Set&#xff09;2.2 内存池&#xff08;Memory Pool&#xff09;2.3 内存块&#xff08;Memory Block&#xff09; 3 内存方案3.1 第一级服务器内存3.2 第二级操作系统内存和实例共享内存3.3 第三级数据库…

K8S | 核心原理分析

整体上理解流程和原理&#xff1b; 一、背景 基于分布式的架构中&#xff0c;需要管理的服务是非常多的&#xff0c;无论是服务的数量还是体系划分&#xff1b; 从服务的能力上看&#xff0c;可以进行分层管控&#xff0c;只是其中有相当一部分服务层&#xff0c;改动更新的频…

【Python黑科技】自动答题项目代码分析(保姆级图文+实现代码)

目录 实现效果图片素材和源码 实现思路1. 打开对应网页&#xff0c;做好准备工作2. 获取正确答案3. 答题4. 提交试卷实现代码总结 欢迎关注 『Python黑科技』 系列&#xff0c;持续更新中 欢迎关注 『Python黑科技』 系列&#xff0c;持续更新中 实现效果 图片素材和源码 已经…

chatgpt赋能python:Python如何在图像上标注

Python如何在图像上标注 对于图像标注&#xff0c;Python提供了许多工具和库&#xff0c;其中最常用的是OpenCV和Pillow。这篇文章将介绍如何使用Pillow在图像上进行标注。 安装Pillow库 在使用Pillow库之前&#xff0c;需要先安装它。在命令行中输入以下命令&#xff1a; …

2023-06-02 stonedb-修改包含内连接的嵌套外连接-问题反思

摘要: 最近在搞一个列存储引擎的包含内连接的嵌套外连接过慢的问题, 连接执行过慢的原因分析见此前的博客分析, 虽然逻辑很绕, 但是也不是无法分析. 更麻烦的问题在于修改查询计划, 让其能按照代价更小的方式正确的执行. 遇到的问题比我在修改查询计划前设想的更为棘手, 本文…

chatgpt赋能python:Python循环次数:实现高效编程的关键

Python循环次数&#xff1a;实现高效编程的关键 在编写Python程序时&#xff0c;循环次数是一个经常需要关注的问题。循环次数过多会导致程序执行效率低下&#xff0c;甚至可能引起性能问题。因此&#xff0c;如何控制循环次数成为实现高效编程的关键。本文将介绍Python中循环…

chatgpt赋能python:Python如何实现将数据结果导出

Python如何实现将数据结果导出 在Python编程中&#xff0c;我们经常需要将代码运行的结果导出保存在文件中&#xff0c;或在其他程序中使用。下面我们将介绍Python中几种将数据结果导出的方法。 方法一&#xff1a;使用文件输出 使用Python内置的open方法来打印输出的结果到…

【C++】类和对象 - 对象特性 - 构造函数和析构函数,函数分类及调用,拷贝构造函数调用时机,构造函数调用规则,深浅拷贝,初始化列表,类对象作为类成员

No.Contents1【C】基础知识 - HelloWorld&#xff0c;注释&#xff0c;变量&#xff0c;常量&#xff0c;关键字&#xff0c;标识符2【C】数据类型 - 整型&#xff0c;sizeof&#xff0c;实型&#xff0c;字符型&#xff0c;转义字符&#xff0c;字符串类型&#xff0c;布尔类型…

chatgpt赋能python:Python版本更新:为什么你应该及时升级

Python版本更新&#xff1a;为什么你应该及时升级 作为一名有10年Python编程经验的工程师&#xff0c;我深刻理解Python版本更新的重要性。在这篇文章中&#xff0c;我将向你介绍Python版本更新的背景和原因&#xff0c;并告诉你如何及时升级Python的版本以保持你的代码的安全…