了解 JSON 格式

一、JSON 基础

JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种轻量级的数据交换格式,JSON 的设计目的是使得数据的存储和交换变得简单。

JSON 易于人的阅读和书写,同时也易于机器的解析和生成。尽管 JSON 是 JavaScript 的一个子集,但 JSON 是独立于语言的文本格式。

二、JSON 语法

JSON 语法是 JavaScript 语法的子集,JSON 数据的表示方法如下:

数据由键值对构成,键和值之间使用冒号 : 分隔,键必须使用双引号 "" 包围。每个键值对之间使用逗号 , 分隔。

大括号 { } 保存对象,方括号 [ ] 保存数组。

例始,以下是一个简单的 JSON 对象,它表示了一个人的信息,包括姓名、年龄和爱好。

{
    "姓名": "小明",
    "年龄": 20,
    "爱好": ["阅读", "音乐", "电影"]
}

三、JSON 数据类型

JSON 支持以下数据类型:

字符串

string

由双引号包围的一串 Unicode 字符。

例如:"小明"。

数字

number

整数或浮点数。

例如:25,或者,3.14。

对象

object

无序的键值对集合。

例如:{"姓名": "小明", "年龄": 25}。

数组

array

有序的值集合。

例如:["阅读", "音乐", "电影"]。

布尔值

boolean

true 和 false。

null

表示空值或无值,写成 null。

对象和数组可以嵌套使用,以实现更复杂的数据结构。

{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}

可以使用任意文本编辑器,根据 JSON 格式的规则,编写键值对、数组和对象等,然后将编写好的内容保存为一个以 .json 为后缀的文件。

JSON 文件编码通常使用 UTF-8。

四、JSON 数据的解释和生成

大多数编程语言都有内置函数可以将 JSON 文本转换为对应语言的数据结构。

例如,在 JavaScript 中,我们可以使用 JSON.parse() 函数将 JSON 文本转换为 JavaScript 对象。

let text = '{"name": "John", "age": 30}';
let obj = JSON.parse(text);
console.log(obj.name);  // 输出 "John"

再例如,在 Python 中,我们使用 json 模块的 loads 方法将 JSON 数据解析为 Python 对象。

import json


json_string = '{"姓名": "小明", "年龄": 30}'
python_obj = json.loads(json_string)
print(python_obj["姓名"])  # 输出 "小明"

在上面这个例子中,我们将 JSON 字符串 {"姓名": "小明", "年龄": 30} 转换为了 Python 对象,并打印出了姓名的值。

与解析相反,序列化是将编程语言的数据结构转化为 JSON 文本的过程。

例如,在 JavaScript 中,我们可以使用 JSON.stringify() 函数进行序列化。

let obj = {"name": "John", "age": 30};
let text = JSON.stringify(obj);
console.log(text);  // 输出 '{"name":"John","age":30}'

再例如,在 Python 中,我们可以使用 json 模块的 dumps 方法将 Python 对象转换为 JSON 字符串。

import json


python_obj = {"name": "John", "age": 30}
json_string = json.dumps(python_obj)
print(json_string)  # 输出 '{"name": "John", "age": 30}'

五、JSON 文件的读写

以 Python 为例,读取和写入 JSON 文件也是通过 json 模块来实现的。

在下面例子中,我们首先打开名为 data.json 的文件,然后使用 json.load( ) 函数将 JSON 文件的内容转换为 Python 对象。json.load( ) 函数的参数是一个文件对象,它将从这个文件对象中读取 JSON 数据并返回对应的 Python 对象。

import json


# 打开文件并加载为 Python 对象
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)


print(data)

在下面例子中,我们首先创建了一个 Python 对象 data,然后使用 json.dump( ) 函数将这个 Python 对象转换为 JSON 数据并写入 output.json 文件。

import json


data = {
    "姓名": "小明",
    "年龄": 30,
    "爱好": ["阅读", "音乐", "电影"]
}


# 将 Python 对象转换为 JSON 格式,并写入文件
with open('output.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

上面例子中,json.dump( ) 函数的第一个参数是要转换的 Python 对象,第二个参数是一个文件对象,它将把转换得到的 JSON 数据写入这个文件对象。ensure_ascii=False 参数使得中文字符能正确地被写入,indent=4 参数表示在输出的 JSON 数据中,使用 4 个空格缩进。

6954f060e07a0f1ca35aeaf4064d7866.jpeg

“点赞有美意,赞赏是鼓励”

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Apache BeanUtils工具介绍

beanutils,顾名思义,是java bean的一个工具类,可以帮助我们方便的读取(get)和设置(set)bean属性值、动态定义和访问bean属性;细心的话,会发现其实JDK已经提供了一个java.beans包,同样可以实现以上功能&…

Vue2.0+webpack 引入字体文件(eot,ttf,woff)

webpack.base.config.js 需要配置 {test:/\/(woff2?|eot|ttf|otf)(\?.*)?$/,loader: url-loader,options: {limit: 10000,name: utils.assetsPath(fonts/[name].[hash:7].[ext])}} 如果 Vue2.0webpack3.6引入字体文件(eot,ttf,woff&…

[PyTorch][chapter 51][Auto-Encoder -1]

目录: 简介 损失函数 自动编码器的类型 一 AutoEncoder 简介: 自动编码器是一种神经网络,用于无监督学习任务.(没有标签或标记数据), 例如降维,特征提取和数据压缩. 主要任务: 1: 输入数据 …

SCSS 学习笔记 和 vscode下载live sass compiler插件配置

1、下载livelive sass compiler插件并配置 // 在 已有代码 下面 添加下面 代码,一般刚刚下载打开最后一行是:// "liveSassCompile.settings.autoprefix": [],// 所以直接 把下面复制进去保存就行"liveSassCompile.settings.autoprefix&qu…

产业园区数字孪生3d可视化全景展示方案

随着数字经济的发展,数字技术给企业发展带来了机遇的同时,也为企业管理带来挑战。比如园区运维,不仅体量大,复杂的运维管理系统,落地难度也较高。那么如何通过数字化手段重塑园区运营,打通园区各业务数据孤…

关闭浏览器窗口弹出提示框(vue项目)

<script> export default {name: App,mounted() { //开发环境不需要提示if (process.env.NODE_ENV development) returnthis.$nextTick(() > {window.addEventListener(beforeunload, this.beforeUnload)})},beforeDestroy() {if (process.env.NODE_ENV development…

生成式AI系列 —— DCGAN生成手写数字

1、模型构建 1.1 构建生成器 # 导入软件包 import torch import torch.nn as nnclass Generator(nn.Module):def __init__(self, z_dim20, image_size256):super(Generator, self).__init__()self.layer1 nn.Sequential(nn.ConvTranspose2d(z_dim, image_size * 32,kernel_s…

「Vue|网页开发|前端开发」01 快速入门:用vue-cli快速写一个Vue的HelloWorld项目

本文主要介绍如何用vue开发的标准化工具vue-cli快速搭建一个符合实际业务项目结构的hello world网页项目并理解vue的代码文件结构以及页面渲染流程。 文章目录 一、准备工作&#xff1a;安装node.js二、项目搭建创建项目目录全局安装vue-cli使用Webpack初始化项目启动项目学会…

SpringBoot---内置Tomcat 配置和切换

&#x1f600;前言 本篇博文是关于内置Tomcat 配置和切换&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;您的满意是我的动力&#x…

SVM详解

公式太多了&#xff0c;就用图片用笔记呈现&#xff0c;SVM虽然算法本质一目了然&#xff0c;但其中用到的数学推导还是挺多的&#xff0c;其中拉格朗日约束关于α>0这块证明我看了很长时间&#xff0c;到底是因为悟性不够。对偶问题也是&#xff0c;用了一个简单的例子才明…

React请求机制优化思路 | 京东云技术团队

说起数据加载的机制&#xff0c;有一个绕不开的话题就是前端性能&#xff0c;很多电商门户的首页其实都会做一些垂直的定制优化&#xff0c;比如让请求在页面最早加载&#xff0c;或者在前一个页面就进行预加载等等。随着react18的发布&#xff0c;请求机制这一块也是被不断谈起…

3 个 ChatGPT 插件您需要立即下载3 ChatGPT Extensions You need to Download Immediately

在16世纪&#xff0c;西班牙探险家皮萨罗带领约200名西班牙士兵和37匹马进入了印加帝国。尽管印加帝国的军队数量达到了数万&#xff0c;其中包括5,000名精锐步兵和3,000名弓箭手&#xff0c;他们装备有大刀、长矛和弓箭等传统武器。但皮萨罗的军队中有100名火枪手&#xff0c;…

eDP接口的PCB布局布线要求

eDP接口是一种基于DisplayPort架构和协议的一种全数字化接口&#xff0c;传递高分辨率信号只需要较简单的连接器以及较少的引脚就可以实现&#xff0c;同时还能够实现多数据同时传输。 图1 EDP接口 eDP接口的PCB设计布局布线注意事项&#xff1a; 1、远离干扰源&#xff0c;防…

数据分析15——office中的Excel基础技术汇总

0、前言&#xff1a; 这部分总结就是总结每个基础技术的定义&#xff0c;在了解基础技术名称和定义后&#xff0c;方便对相关技术进行检索学习。笔记不会详细到所有操作都说明&#xff0c;但会把基础操作的名称及作用说明&#xff0c;可自行检索。本文对于大部分读者有以下作用…

html动态爱心代码【一】(附源码)

前言 七夕马上就要到了&#xff0c;为了帮助大家高效表白&#xff0c;下面再给大家带来了实用的HTML浪漫表白代码(附源码)背景音乐&#xff0c;可用于520&#xff0c;情人节&#xff0c;生日&#xff0c;表白等场景&#xff0c;可直接使用。 效果演示 文案修改 var loverNam…

windows下, artemis学习

1. download artemis from apache ActiveMQhttps://activemq.apache.org/components/artemis/download/2. 解压缩到 C:/software/apache-artemis-2.30.0/ 2. 进入到cmd&#xff0c; 执行 C:\software\apache-artemis-2.30.0\bin>artemis create C:/software/apache-artem…

数据结构—树表的查找

7.3树表的查找 ​ 当表插入、删除操作频繁时&#xff0c;为维护表的有序表&#xff0c;需要移动表中很多记录。 ​ 改用动态查找表——几种特殊的树 ​ 表结构在查找过程中动态生成 ​ 对于给定值key ​ 若表中存在&#xff0c;则成功返回&#xff1b; ​ 否则&#xff0…

[C++ 网络协议编程] 域名及网络地址

1. DNS服务器 DNS&#xff08;Domain Name System&#xff09;&#xff1a;是对IP地址和域名&#xff08;如:www.baidu.com等&#xff09;进行相互转换的系统&#xff0c;其核心是DNS服务器。 我们输入的www.baidu.com是域名&#xff0c;是一种虚拟地址&#xff0c;而非实际地…

JVM详解

文章目录 一、JVM 执行流程二、类加载三、双亲委派模型四、垃圾回收机制&#xff08;GC&#xff09; 一、JVM 执行流程 程序在执行之前先要把java代码转换成字节码&#xff08;class文件&#xff09;&#xff0c;JVM 首先需要把字节码通过一定的方式 类加载器&#xff08;Clas…

【nodejs】用Node.js实现简单的壁纸网站爬虫

1. 简介 在这个博客中&#xff0c;我们将学习如何使用Node.js编写一个简单的爬虫来从壁纸网站获取图片并将其下载到本地。我们将使用Axios和Cheerio库来处理HTTP请求和HTML解析。 2. 设置项目 首先&#xff0c;确保你已经安装了Node.js环境。然后&#xff0c;我们将创建一个…