【JSON学习笔记】1.JSON 简介及语法

news2025/1/24 5:46:47

前言

本章介绍JSON及其语法。

JSON 教程

JSON: JavaScript Object Notation(JavaScript 对象表示法)

JSON 是存储和交换文本信息的语法,类似 XML。

JSON 比 XML 更小、更快,更易解析。

JSON 易于人阅读和编写。

C、Python、C++、Java、PHP、Go等编程语言都支持 JSON。

JSON 实例

{
    "sites": [
    { "name":"csdn教程" , "url":"www.csdn.com" }, 
    { "name":"google" , "url":"www.google.com" }, 
    { "name":"微博" , "url":"www.weibo.com" }
    ]
}

这个 sites 对象是包含 3 个站点记录(对象)的数组。

什么是 JSON ?

  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和JSON 库支持许多不同的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。
  • JSON 具有自我描述性,更易理解

JSON - 转换为 JavaScript 对象
JSON 文本格式在语法上与创建 JavaScript 对象的代码相同。

由于这种相似性,无需解析器,JavaScript 程序能够使用内建的 eval() 函数,用 JSON 数据来生成原生的 JavaScript 对象。

JSON - 简介

在线实例
通过我们的编辑器,您可以在线编辑 JavaScript 代码,然后通过点击一个按钮来查看结果:

JSON 实例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>csdn教程(csdn.com)</title>
</head>
<body>
<h2>JavaScript 创建 JSON 对象</h2>
<p>
网站名称: <span id="jname"></span><br /> 
网站地址: <span id="jurl"></span><br /> 
网站 slogan: <span id="jslogan"></span><br /> 
</p>
<script>
var JSONObject= {
    "name":"csdn教程",
    "url":"www.csdn.com", 
    "slogan":"学的不仅是技术,更是梦想!"
};
document.getElementById("jname").innerHTML=JSONObject.name 
document.getElementById("jurl").innerHTML=JSONObject.url 
document.getElementById("jslogan").innerHTML=JSONObject.slogan
</script>
 
</body>
</html>

与 XML 相同之处

  • JSON 是纯文本
  • JSON 具有"自我描述性"(人类可读)
  • JSON 具有层级结构(值中存在值)
  • JSON 可通过 JavaScript 进行解析
  • JSON 数据可使用 AJAX 进行传输

与 XML 不同之处

  • 没有结束标签

  • 更短

  • 读写的速度更快

  • 能够使用内建的 JavaScript eval() 方法进行解析

  • 使用数组

  • List item

  • 不使用保留字

为什么使用 JSON?
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:

使用 XML

  • 读取 XML 文档

  • 使用 XML DOM 来循环遍历文档

  • 读取值并存储在变量中

使用 JSON

  • 读取 JSON 字符串

  • 用 eval() 处理 JSON 字符串

JSON 语法

JSON 语法是 JavaScript 语法的子集。

JSON 语法规则
JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值对中
  • 数据由逗号,分隔
  • 使用斜杆 \ 来转义字符
  • 大括号 {} 保存对象
  • 中括号 [] 保存数组,数组可以包含多个对象

JSON 的两种结构:

1、对象:大括号 {} 保存的对象是一个无序的名称/值对集合。一个对象以左括号 { 开始, 右括号 } 结束。每个"键"后跟一个冒号 :,名称/值对使用逗号 , 分隔。

在这里插入图片描述

2、数组:中括号 [] 保存的数组是值(value)的有序集合。一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔。

在这里插入图片描述

在这里插入图片描述

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),它们是可以嵌套。

JSON 名称/值对
JSON 数据的书写格式是:

key : value

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"name" : "csdn教程"

这很容易理解,等价于这条 JavaScript 语句:

name = "csdn教程"

JSON 值
JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • null

JSON 数字
JSON 数字可以是整型或者浮点型:

{ "age":30 }

JSON 对象
JSON 对象在大括号 {} 中书写:

{key1 : value1, key2 : value2, ... keyN : valueN }

对象可以包含多个名称/值对:

{ "name":"csdn教程" , "url":"www.csdn.com" }

这一点也容易理解,与这条 JavaScript 语句等价:

name = "csdn教程"
url = "www.csdn.com"

JSON 数组
JSON 数组在中括号 [] 中书写:

数组可包含多个对象:

[
    { key1 : value1-1 , key2:value1-2 }, 
    { key1 : value2-1 , key2:value2-2 }, 
    { key1 : value3-1 , key2:value3-2 }, 
    ...
    { key1 : valueN-1 , key2:valueN-2 }, 
]
{
    "sites": [
        { "name":"csdn教程" , "url":"www.csdn.com" }, 
        { "name":"google" , "url":"www.google.com" }, 
        { "name":"微博" , "url":"www.weibo.com" }
    ]
}

在上面的例子中,对象 sites 是包含三个对象的数组。每个对象代表一条关于某个网站(name、url)的记录。

JSON 布尔值
JSON 布尔值可以是 true 或者 false:

{ "flag":true }

JSON null
JSON 可以设置 null 值:

{ "csdn":null }

JSON 使用 JavaScript 语法
因为 JSON 使用 JavaScript 语法,所以无需额外的软件就能处理 JavaScript 中的 JSON。

通过 JavaScript,您可以创建一个对象数组,并像这样进行赋值:

实例

var sites = [
    { "name":"csdn" , "url":"www.csdn.com" }, 
    { "name":"google" , "url":"www.google.com" }, 
    { "name":"微博" , "url":"www.weibo.com" }
];

可以像这样访问 JavaScript 对象数组中的第一项(索引从 0 开始):

sites[0].name;

返回的内容是:

csdn

可以像这样修改数据:

sites[0].name="csdn教程";

在下面的章节,您将学到如何把 JSON 文本转换为 JavaScript 对象。

JSON 文件

  • JSON 文件的文件类型是 .json
  • JSON 文本的 MIME 类型是 application/json

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

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

相关文章

python机器学习基础——监督学习算法之线性回归

定义 线性模型是在实践中广泛使用的一类模型&#xff0c;几十年来被广泛研究&#xff0c;它可以追溯到一百多年前。线性模型利用输入特征的线性函数 用于回归的线性模型 import mglearn import matplotlib.pyplot as pltmglearn.plots.plot_linear_regression_wave()plt.show…

使用vue实现分页

使用vue实现分页的逻辑并不复杂&#xff0c;接收后端传输过来的数据&#xff0c;然后根据数据的总数和每一页的数据量就可以计算出一共可以分成几页 我编写了一个简单的前端页面用来查询数据&#xff0c;页面一共有几个逻辑 具体的效果可以看下面的演示 下面就来看一下具体的实…

【MyBatis】MyBatis分页插件的使用

文章目录MyBatis分页插件的使用前置知识分页插件的使用MyBatis分页插件的使用 前置知识 MyBatis基础用法。推荐阅读&#xff1a;MyBatis的基本使用 MySQL分页查询&#xff1a; 知道分页查询的规律&#xff0c;同时知道limit index pageSize的使用 index&#xff1a;当前页的起…

【分布式 论文】之 1. MapReduce——Simplified Data Processing on Large Clusters

文章目录1. 需求 / 现存问题2. 总述3. 实现3.1 概述3.2 Master的数据结构3.3 容错性3.3.1 worker节点故障3.3.2 master节点故障3.3.3 故障环境下的语义3.4 位置&#xff08;Locality&#xff09;3.5 任务粒度3.6 备份任务4. 对MapReduce的扩展4.1 划分函数4.2 排序保证4.3 聚合…

【Python】网络请求

目录 一、网络请求流程 1.HTTP 2.URL 3.网络传输模型 4.长链接/短链接 二、爬虫基础 1.基础概念 2.发送请求 3.请求模式 4.cookie 5.retrying 一、网络请求流程 1.HTTP 用户输入网址&#xff0c;例如 www.baidu.com浏览器先向DNS请求&#xff0c;找到网址域名对应的…

【Linux】网络层 — IP协议

&#x1f387;Linux&#xff1a; 博客主页&#xff1a;一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 看似不起波澜的日复一日&#xff0c;一定会在某一天让你看见坚持…

html页面在其他浏览器中渲染不出来

参考文章 问题 Vs code软件中live sever插件设置默认的浏览器是360浏览器&#xff0c;所以一直以来页面都是默认在360浏览器上进行打开并且没有问题。 后面想换谷歌浏览器打开html页面看下效果&#xff0c;发现图表和数据渲染不出来&#xff1a; 报错信息&#xff1a; 用js…

想制作出专业水准的音视频?掌握H.264编码技巧是关键

H.264编码原理 H.264&#xff0c;也被称为先进视频编码&#xff08;AVC&#xff09;&#xff0c;是目前最流行的视频编码标准之一&#xff0c;其压缩效率很高。H.264编码基于视频编码的原始数据&#xff0c;使用一系列算法和技术以更小的比特率呈现更高质量的视频。以下是H.26…

【SSM】Spring6(十一.Spring对事务支持)

文章目录1.引入事务场景1.1准备数据库1.2 创建包结构1.3 创建POJO类1.4 编写持久层1.5 编写业务层1.6 Spring配置文件1.7 表示层&#xff08;测试&#xff09;1.8 模拟异常2.Spring对事务的支持2.1 spring事务管理API2.2 spring事务之注解方式2.3 事务的属性2.4 事务的传播行为…

春季儿童吃什么有助于长高,3款适合孩子长高的食谱做法,学起来

儿童身高一直以来都比较受到父母的关注&#xff0c;虽然身高不能说明一个人的能力有多强&#xff0c;但是会影响到人的外表。身高影响成败&#xff0c;一些专业对身高要求非常严格&#xff0c;因此大部分家长都希望孩子在身高方面能有一定的优势。 春季是孩子分泌生长激素增加时…

一位27岁软件测试员,测试在职近5年,月薪不到2W,担心被应届生取代

工作了近5年&#xff0c;一个月工资不到20K&#xff0c;担心被应届毕业生取代&#xff01;互联网的快速发展伴随着员工适者生存的加速&#xff0c;测试员的薪资也在不断增长&#xff0c;以3年、5年、8年为一条分水岭。如果人们的能力和体力不够&#xff0c;他们就会被淘汰。看起…

【JavaEE】多线程CAS中的aba问题是什么?

博主简介&#xff1a;想进大厂的打工人博主主页&#xff1a;xyk:所属专栏: JavaEE初阶什么是CAS问题&#xff1f;CAS: 全称Compare and swap&#xff0c;字面意思:”比较并交换“&#xff0c;CAS中的aba问题是什么&#xff1f;请看本文讲解~~ 目录 文章目录 一、CAS是什么&am…

2023二建学天案例突破101问

2023 年二级建造师《公路》案例 101 问1.哪些情况下应进行长度宜不小于 200m的试验路段施工。(1)二级及二级以上公路路堤。(2)填石路堤、土石路堤;(3)特殊填料路堤;(4)特殊路基;(5)拟采用新技术、新工艺、新材料&#xff0c;新设备的路系。2.石质路暂的开挖方式有哪些!(1)钻爆开…

【笔记】响应表头中的Content-disposition

问题来源&#xff1a; 今天在做关于 怎样不通过使用插件的方式在HTML上预览本地C盘下的PDF文件&#xff0c;在生成PDF文件到C盘后&#xff0c;我想在下载和生成之间&#xff0c;再加一个PDF预览&#xff0c;就是先生成到C盘&#xff0c;再由用户来预览之后再决定是否下载&…

ModelNet40数据集

跑PointNet,modelnet40数据集时; 有些人直接用.off文件;——【CAD模型】普林斯顿形状Banchmark中的.off文件遵循以下标准&#xff1a; OFF文件全是以OFF关键字开始的ASCII文件。下一行说明顶点的数量、面片的数量、边的数量。 边的数量可以安全地省略。对模型不会有影响(可以为…

4/16学习周报

文章目录前言文献阅读摘要简介方法评估标准结果结论时间序列预测支持向量机SVM高斯过程GPRNNLSTMGRUtransformer总结前言 本周阅读文献《Real-time probabilistic forecasting of river water quality under data missing situation: Deep learning plus post-processing tech…

环境变量概念详解!(4千字长文)

环境变量&#xff01; 文章目录环境变量&#xff01;环境变量PATHexportexport的错误用法定义命令行变量环境变量哪里来的其他各种环境变量HOMEHOSTNAMELOGNAMEHISTSIZEPWD环境变量相关指令echoenvgetenv——相关函数&#xff01;exportsetunset命令行参数argcargvenvpenvironp…

stata绘图指令

stata绘图指令 – 潘登同学的stata笔记 文章目录stata绘图指令 -- 潘登同学的stata笔记绘图概览韦恩图折线图连线图线性拟合图直方图函数图添加特殊字符和文字绘图概览 Stata 提供的图形种类&#xff1a; twoway 二维图scatter 散点图line 折线图area 区域图lfit 线性拟合图q…

漏洞扫描工具AWVS的安装及配置使用过程

简介 Acunetix Web Vulnerability Scanner&#xff08;AWVS&#xff09;可以扫描任何通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的Web网站。 AWVS可以通过检查SQL注入攻击漏洞、XSS跨站脚…

LinuxGUI自动化测试框架搭建(三)-虚拟机安装(Hyper-V或者VMWare)

&#xff08;三&#xff09;-虚拟机安装&#xff08;Hyper-V或者VMWare&#xff09;1 Hyper-V安装1.1 方法一&#xff1a;直接启用1.2 方法二&#xff1a;下载安装1.3 打开Hyper-V2 VMWare安装注意&#xff1a;Hyper-V或者VMWare只安装一个&#xff0c;只安装一个&#xff0c;只…