JSON初学习

news2024/9/25 1:22:37

目录

1、JSON定义

2、与 JS 对象的关系

3、常用类型示例

4、JSON与XML比较


1、JSON定义

JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简言之,JSON是一种文本规范,或是一种字符串规范。

图片来源:Json 详解,5分钟学会_哔哩哔哩_bilibili

注意:

1. JSON是一个序列化的对象或数组

2. JSON的值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写

图片来源:JSON_百度百科

2、与 JS 对象的关系

JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

3、常用类型示例

任何支持的类型都可以通过 JSON 来表示,下面以对象和数组为例。

当使用 JSON 表示对象时,可以使用花括号 {} 包裹键值对的形式。

图片来源:Json 详解,5分钟学会_哔哩哔哩_bilibili

下面是一个表示用户信息的 JSON 对象的示例:

{
  "name": "John Doe",
  "age": 30,
  "email": "johndoe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "New York",
    "country": "USA"
  }
}

在上面的示例中,nameageemailaddress 是键,对应的值可以是字符串、数字或另一个嵌套的对象。


当使用 JSON 表示数组时,可以使用方括号 [] 包裹多个元素。

图片来源:Json 详解,5分钟学会_哔哩哔哩_bilibili

下面是一个表示用户列表的 JSON 数组的示例:

[
  {
    "name": "John Doe",
    "age": 30,
    "email": "johndoe@example.com"
  },
  {
    "name": "Jane Smith",
    "age": 25,
    "email": "janesmith@example.com"
  },
  {
    "name": "Bob Johnson",
    "age": 35,
    "email": "bobjohnson@example.com"
  }
]

上面的示例中,每个元素都是一个包含用户信息的 JSON 对象,并按顺序排列在数组中。这只是简单的示例,实际使用中,JSON 可以支持更复杂的数据结构和嵌套关系。

4、JSON与XML比较

JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种常用的数据格式,用于在不同系统之间传输和存储数据。它们有以下比较:

1. 数据格式:JSON使用简洁的键值对形式表示数据,易于阅读和编写。而XML使用标签嵌套的方式表示数据,较为冗长。

2. 数据体积:JSON相对来说数据体积较小,因为它不需要像XML那样添加大量的标记和属性。这使得JSON在网络传输和数据交换中更高效。

3. 可读性:JSON易于阅读和理解,特别适合机器之间的数据交互。XML具有良好的可扩展性和可读性,适用于人类阅读和写作。

4. 解析和处理:JSON的解析速度通常快于XML,因为JSON数据结构较简单。JSON可以直接通过JavaScript内置的`JSON.parse()`函数进行解析。XML则需要通过DOM(Document Object Model)或SAX(Simple API for XML)解析器进行解析。

5. 元数据支持:XML可以使用DTD(Document Type Definition)或XSD(XML Schema Definition)定义文档的结构和规则,提供了更严格的数据验证和描述能力。而JSON没有内置的元数据支持。

6. 跨平台和语言支持:JSON在各种编程语言中都有良好的支持,特别适用于Web应用程序。XML也可以被广泛支持,但相对来说JSON更为常见。

7. 适用场景

适用场景下使用JSON:

1. Web应用程序/API交互:JSON是Web应用程序和API之间最常见的数据交换格式。它可以轻松地与JavaScript结合使用,并且在前后端之间进行数据传输时效率高。

2. 移动应用程序开发:JSON对于移动应用程序的开发非常方便。由于移动设备的资源和网络带宽有限,JSON的轻量性和易解析的特点使其成为移动应用程序中常用的数据格式。

3. 配置文件:JSON可用于存储和传输配置数据。它的层次结构和简洁性使得配置项易于阅读、修改和跨系统传递。

图片来源:Json 详解,5分钟学会_哔哩哔哩_bilibili

适用场景下使用XML:

1. 文档存储和传输:XML的标记语言特性使其非常适合存储和传输结构化文档。它可以保留文档的层次结构和元数据,适用于处理复杂的文本文档。

2. 数据描述和元数据:XML支持DTD和XSD等机制,能够定义数据的结构和规则,提供强大的数据描述和验证能力。这使得XML在需要严格定义和验证数据的领域(如电子商务、医疗记录等)中更为适用。

3. 跨平台数据交换:XML是一种通用的、独立于平台和语言的数据格式。它可以与各种系统集成,并具有广泛的支持,使其成为在异构系统之间进行数据交换的可靠选择。

总而言之,JSON适用于轻量级的数据交换和前后端交互,而XML适用于复杂文档存储、数据描述和跨平台数据交换的场景。具体使用哪种格式需根据具体需求和现有环境来决定选择使用JSON还是XML取决于数据的结构、规模以及与其他系统的集成要求。

参考

JSON_百度百科

学习JSON看这一篇就够了

Json 详解,5分钟学会_哔哩哔哩_bilibili


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

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

相关文章

【AI美图】第01期效果图,AI人工智能无绘画,美图欣赏

人工智能被各大平台传递,我也来凑一下热闹,放一组基础图片展示 介绍一下模型来源Stability AI: Stability AI直接将模型开源,且方式之粗暴,几乎完全不对生成内容做任何审核或者过滤。目前发布的稳定版本仅包含部分关…

YOLOv8优化策略:UniRepLKNetBlock 助力检测 | UniRepLKNet,通用感知大内核卷积网络,2023.12

🚀🚀🚀本文改进: UniRepLKNet,通用感知大内核卷积网络,ImageNet-22K预训练,精度 和速度SOTA,ImageNet达到88%, COCO达到56.4 box AP,ADE20K达到55.6 mIoU UniRepLKNetBlock 与C2f进行结合使用 🚀🚀🚀YOLOv8改进专栏:http://t.csdnimg.cn/hGhVK 学姐带你学…

上海亚商投顾:沪指高开低走 电力、煤炭板块逆势走强

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开低走,深成指、创业板指盘初涨超1%,随后冲高回落集体翻绿。 国企改革…

Qt图形设计

#include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//窗口相关设置//设置窗口标题this->setWindowTitle("王者荣耀");//设置窗口图标this->setWindowIcon(QIcon("C:\\Users\\28033\\Pictures\\Saved Pictures\\pict…

学习使用echarts漏斗图的参数配置和应用场景

学习使用echarts漏斗图的参数配置和应用场景 前言什么是漏斗图漏斗图的特点及应用场景漏斗图的特点漏斗图常见的的应用场景: echarts中漏斗的常用属性echart漏斗代码美化漏斗图样式1、设置标题字体大小2、设置标签样式3、设置漏斗图为渐变颜色4、设置高亮效果5、设置…

java导出word使用模版与自定义联合出击解决复杂表格!

1. 看一下需要导出什么样子的表格 如图所示,这里的所有数据行都是动态的,需要根据查询出来的数据循环展示。 如果只是这样的话,使用freemarker应该都可以搞定,但是他一列中内容相同的单元格,需要合并。 这对于表格样式…

Go实现http同步文件操作 - 增删改查

http同步文件操作 - 增删改查 http同步文件操作 - 增删改查1. 前置要求1.1. 构建结构体 文件名 文件内容1.1.1. 页面结构体1.1.2. 为Page结构体绑定方法:Save1.1.3. 对Page结构体支持页面内容查看方法,同时提供页面文件是否存在的方法 1.2. 简单验证上面…

【树莓派】高级开发概述、开发环境搭建(内核镜像拷贝至树莓派并启动新内核)

一、树莓派开发环境搭建 二、Linux文件系统的目录结构 三、树莓派Linux源码目录树分析 四、树莓派Linux源码配置 五、如何配置树莓派的Linux内核 六、树莓派Linux内核编译 七、配置启动参数的cmdline.txt 一、树莓派开发环境搭建 树莓派官网 raspberrypi raspberrypi/tools…

FM30H12G N通道沟槽电源MOS管 封装形式PDFN5*6

FM30H12G 是一款 N通道沟槽电源的场效应管(MOS管),封装形式:PDFN5*6。 来百度APP畅享高清图片 FM30H12G应用: 1、液晶电视 2、笔记本 3、电梯 4、感应加热 5、电动工具

低碳未来,智慧共赢!SIA上海工业自动化展2024焕新出发!

近年来,全球积极推进智能化数字化赋能工程,国内制造业也全面向数字化智能化转型。重点企业、龙头企业充分发挥综合优势,着力推动智能工厂、数字化车间的建设,深入实施“机器换人”战略,以促进产品、企业、产业全面升级…

使用 PAI-Blade 加速 StableDiffusion Fine-Tuning

01 背景 Stable Diffusion 模型自从发布以来在互联网上发展迅猛,它可以根据用户输入的文本描述信息生成相关图片,用户也可以提供自己喜爱的风格的照片,来对模型进行微调。例如当我们输入 "A photo of sks dog in a bucket" &…

城市数字化管理、智慧城市、数字孪生城市间的关系和演变

基于《基于数字孪生的智慧城市》和《2023版数字孪生世界白皮书》,我们可以全面了解从数字城市管理到智慧城市,再到数字孪生城市的关系和发展历程。 以下是这一顺序和继承关系的要点总结: 城市数字化管理 这是城市地区向智慧城市演进的初始…

蓝桥杯专题-真题版含答案-【信用卡号校验】【数量周期】【取球博弈】【Playfair密码】

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

节气丨大雪过后,阳气归根的十五天,这些事再不做就晚了!

亲爱的家人们大家好,大雪,是24节气中的第21个节气,也是冬季的第3个节气。 这一节气的到来,标志着仲冬时节正式开始,特点是气温显著下降、降水量增多。 古人认为“秋冬养阴”,所谓养阴,即是养阳…

浏览器输入URL再按下回车会经历哪些过程

目录 前言 一、解析URL 二、解析域名(DNS) 三、TCP三次握手建立连接 1.seq、syn、ack含义 2.三次握手 四、发送http/https请求 五、服务器响应请求 六、浏览器解析渲染页面 七、TCP四次挥手断开连接 总结 前言 看各种面经发现这个问题是一个高频出现的面试问题,但…

LLM之RAG实战(四):Self-RAG如何革命工业LLM

论文地址:https://arxiv.org/pdf/2310.11511.pdf Github地址:https://github.com/AkariAsai/self-rag 尽管LLM(大型语言模型)的模型和数据规模不断增加,但它们仍然面临事实错误的问题。现有的Retrieval-Augmented Gen…

详解—C++右值引用

目录 一、右值引用概念 二、 左值与右值 三、引用与右值引用比较 四、值的形式返回对象的缺陷 五、移动语义 六、右值引用引用左值 七、完美转发 八、右值引用作用 一、右值引用概念 C98中提出了引用的概念,引用即别名,引用变量与其引用实体公共…

uniapp实现检查版本检测,更新

1.首先需要获取当前app的版本 const systemInfo uni.getSystemInfoSync();// 应用程序版本号// #ifdef APPme.version systemInfo.appWgtVersion;// #endif// #ifdef H5me.version systemInfo.appVersion;// #endif2.在获取到服务器保存的app版本 3.点击按钮验证版本号 //…

【源码】车牌检测+QT界面+附带数据库

目录 1、基本介绍2、基本环境3、核心代码3.1、车牌识别3.2、车牌定位3.3、车牌坐标矫正 4、界面展示4.1、主界面4.2、车牌检测4.3、查询功能 5、演示6、链接 1、基本介绍 本项目采用tensorflow,opencv,pyside6和pymql编写,pyside6用来编写UI界…

2023年【上海市安全员B证】考试题库及上海市安全员B证考试资料

题库来源:安全生产模拟考试一点通公众号小程序 上海市安全员B证考试题库是安全生产模拟考试一点通总题库中生成的一套上海市安全员B证考试资料,安全生产模拟考试一点通上上海市安全员B证作业手机同步练习。2023年【上海市安全员B证】考试题库及上海市安…