JavaScript JSON 功能 用法运用 详解

news/2025/3/10 21:11:28/文章来源:https://www.cnblogs.com/baisemoshui/p/18763684

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。JSON在JavaScript中的应用非常广泛,以下是对其功能、用法及运用的详细解析。

功能

  1. 数据交换:JSON以其简洁的语法结构,成为Web开发中前后端数据交互的主要格式。它易于人阅读和编写,同时也易于机器解析和生成。
  2. 数据存储:JSON可以用于存储应用程序的配置信息,如API地址、语言设置等。同时,它也被某些NoSQL数据库(如MongoDB)用于存储数据。
  3. 跨平台兼容:JSON是一种独立于编程语言的数据格式,几乎所有编程语言都支持对JSON的解析和生成,这使得它能够在不同的平台和语言之间轻松传输数据。

用法

  1. JSON.parse()方法

    • 功能:用于将JSON字符串解析为JavaScript对象。

    • 语法JSON.parse(jsonString[, reviver])

      • jsonString:要被解析成JavaScript对象的JSON字符串。
      • reviver(可选):转换器,如果传入该参数(函数),可以用来修改解析生成的原始值,调用时机在parse函数返回之前。
    • 示例

      let jsonString = '{"name": "John", "age": 30, "city": "New York"}';
      let jsonObject = JSON.parse(jsonString);
      console.log(jsonObject.name); // 输出: John
      
  2. JSON.stringify()方法

    • 功能:用于将JavaScript对象转换为JSON字符串。

    • 语法JSON.stringify(value[, replacer[, space]])

      • value:将要序列化成JSON字符串的值(对象或数组)。
      • replacer(可选):
        • 如果该参数是一个函数,则在序列化过程中,被序列化的值的每个属性都会经过该函数的转换和处理。
        • 如果该参数是一个数组,则只有包含在这个数组中的属性名才会被序列化到最终的JSON字符串中。
      • space(可选):指定缩进用的空白字符串,用于美化输出(pretty-print)。如果参数是个数字,它代表有多少的空格;如果参数是个字符串(长度超过10个字母,取其前10个字母),则该字符串将被作为空格。
    • 示例

      let person = { name: "John", age: 30, city: "New York" };
      let jsonString = JSON.stringify(person);
      console.log(jsonString); // 输出: {"name":"John","age":30,"city":"New York"}let formattedJsonString = JSON.stringify(person, null, 2);
      console.log(formattedJsonString);
      /* 输出:
      {"name": "John","age": 30,"city": "New York"
      }
      */
      

运用

  1. 前后端数据交互

    • 在Web开发中,JSON常用于前后端之间的数据传输。例如,在AJAX请求中,服务器返回的数据通常以JSON格式发送,前端使用JSON.parse()方法将其解析为JavaScript对象,以便进一步处理。
  2. 本地存储

    • JSON可以用于将数据存储在浏览器的localStoragesessionStorage中。存储时,先将JavaScript对象转换为JSON字符串;读取时,再将JSON字符串解析为JavaScript对象。
    // 存储数据到 localStorage
    let user = { name: "John", age: 30, city: "New York" };
    localStorage.setItem('user', JSON.stringify(user));// 从 localStorage 中读取数据
    let storedUser = JSON.parse(localStorage.getItem('user'));
    console.log(storedUser);
    
  3. 配置文件

    • 一些应用程序使用JSON作为配置文件格式,存储如API地址、语言设置等配置信息。这样,配置信息可以方便地以文本形式进行查看和修改。

注意事项

  1. 格式验证:在解析JSON字符串之前,应确保字符串格式正确。如果尝试解析一个格式不正确的JSON字符串,JSON.parse()会抛出一个错误。可以使用try-catch块来捕获解析错误。

    try {let invalidJsonString = '{"name": "John", "age":}';let jsonObject = JSON.parse(invalidJsonString);
    } catch (error) {console.error("解析JSON时出错:", error);
    }
    
  2. 循环引用:如果对象中存在循环引用,JSON.stringify()会抛出错误。在序列化前需要打破循环引用,或者使用第三方库来处理这种情况。

总结

JSON作为一种轻量级的数据交换格式,以其简洁的语法和跨平台兼容性,在JavaScript及Web开发中发挥着重要作用。通过掌握JSON.parse()JSON.stringify()方法的使用,开发者可以方便地处理JSON数据,实现数据的序列化和反序列化。同时,在运用JSON时,也需要注意格式验证和循环引用等问题,以确保程序的正确性和稳定性。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《Python极客项目编程(第2版)》 | PDF免费下载 | epub free download

本书并不介绍Python语言的基础知识,而是通过一系列有趣的项目,展示如何用Python解决各种实际问题,以及如何使用一些流行的Python库。点击下载书籍信息 作者: [美] 马赫什文基塔查拉姆(Mahesh Venkitachalam) 出版社: 人民邮电出版社 原作名: Python Playground: Geeky Pro…

课堂教学质量评价分析系统 AI+教育

课堂教学质量评价分析系统的核心技术基于YOLOv11和CNN算法,课堂教学质量评价分析系统检测到的行为数据(如玩手机、举手、睡觉、交头接耳、趴桌子、行走运动)和表情数据(如开心、厌恶、愤怒、悲伤、沮丧、恐惧、无表情)会被传递到情感模型进行进一步分析。同时,系统还会结…

04. 串口通信

一、串口通信简介串口通信是一种设备间常用的串行通信方式,串口按位(bit)发送和接收字节。串口通信的数据包由发送设备的 TXD 接口传输到接收设备的 RXD 接口。在串口通信的协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通讯双方的数据包格式…

【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享

问题描述 当在AKS中遇见复杂的网络问题,想要进入到特定的POD中来抓取网络文件包进行分析。特分享抓取网络包的方法!操作步骤 第一步:使用kubectl get pods命令确认问题Pod所在的Node 第二步:使用node shell登录到相应node上 kubectl node-shell <node name> 第三步:…

App虚拟机环境搭建

App虚拟机环境搭建 在uniapp的开发环境中,我想要搭建一个平台完成对于app的开发,所以要配置app的基本环境和安装虚拟机 虚拟机安装 这里使用Mumu虚拟机.直接从官网下载然后傻瓜式安装https://mumu.163.com/搭建环境 主要是给虚拟机的接口和abd.exe文件的地址找到,配置到HBuilde…

nodejs的下载安装

首先进入官网https://nodejs.cn/download/ 左边是稳定版,右边是最新版,安装自己想要的版本 安装到自己想要的路径下 一直next,这步不要勾选 然后install 在安装路径下创建两个文件夹,分别是node_cache和node_global 配置环境变量 再在系统path中添加%NODE_HOME%、%NODE_HOM…

安卓虚拟机的创建

在android studio上创建一个安卓虚拟机 可以选择手机型号 可选的都是谷歌的手机 而且对应的ui都是原生安卓ui 随便选就好 记得安卓版本不要太老,没必要虚拟机运行起来之后就会在边上有个视图

android studio的下载

进入android studio官网下载即可,中间所有东西点同意和next就行

Vue3--ref - reactive

reactive可以深层次对比ref定义对象类型是借用reactive总结

征程 6 工具链 BEVPoolV2 算子使用教程 【2】-BEVPoolV2 QAT 链路实现示例

1.引言 在上一篇帖子中,我们已详尽阐述了 BEVPoolV2 相较于 BEVPoolV1 的改进之处,并对 BEVPoolV2 实现的代码进行了解析。想必大家对 BEVPoolV2 算子的功能及实现已有了一定程度的理解,此篇帖子将展示 征程 6 工具链 BEVPoolV2 单算子 QAT 链路的实现范例,以进一步增进用户…

包装类--java进阶day05

1.包装类比如要让s+100,输出223.如果直接相加,结果是123100,这时就可以将s转换为包装类,然后再用包装类进行相加 2.包装类类型3.手动拆/装箱 我们这里只介绍Integer,其他包装类都是一个模板 第一个方式已经过时,不建议使用.4.自动拆/装箱.5.包装类常用方法 可以直接类名调…

掌握这些 UI 交互设计原则,提升产品易用性

在当今数字化时代,用户对于产品的体验要求越来越高,UI 交互设计成为决定产品成败的关键因素之一。一个易用的产品能够让用户轻松、高效地完成各种操作,而实现这一目标的核心在于遵循一系列科学合理的 UI 交互设计原则。本文将详细阐述简洁性、一致性、反馈、可访问性以及用户…