JSON简介以及如何在Python中使用JSON

news2024/11/24 14:38:53

什么是JSON?

JSON是"JavaScript Object Notation"的简称,是一种数据交换格式

JSON格式

假设我们有一个对象,这个对象有两个属性:“name”跟“age”。

在JSON中是这样表达的:

{

        "name":"男孩",

        “age”:"19"

}

 敢于想象的同学应该立马想到了,这种格式在Python中不就是字典么??

没错,可以简单理解为另类的字典,因为JSON的数据格式跟字典几乎一毛一样(对应文章标题了)

JSON使用键值对的方式来承载数据,每个键值对之间使用逗号隔开。

JSON键值对的数据类型

在JSON中键一定是一个字符串,必须用双引号括起来!!

而值的类型有七种:

字符串、数值、对象、数组、truefalsenull

 其中,数值类型可以使用科学计数法

例如:

JSON嵌套

在JSON中数据也可以嵌套,即一个JSON数据中可以嵌套N个数据,并且使用“[]”来区分。

我去,这不就是Python中的列表???)

格式:

[元素1,元素2]

例如:

{

        "name":"人",

        "friend":["狗","猫","老鼠"],

        "description":{

                "age":"19",

                "sex":"male"

        }        

}

在Python中解析JSON

在Python中对于JSON的解析,需要我们安装JSON库。

安装方法:

pip install json

对于JSON的解析主要有两种:

1.JSON向Python的数据类型转换

2.Python的数据类型向JSON转换

Python向JSON的数据类型转换

Python转换到JSON使用:“json.dumps”函数。

dumps函数语法:

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf8",default=None,sort_keys=False, **kw)

 其中:

1.ensure_ascii:该项设置为False可以输出中文

2.indent:可以设置json对象的缩进(4代表一个Tab的缩进)

3.separators:通过separators可以设置json对象的分隔符

4.sort_keys:当该项设置为True时,生成的json对象是按键排序的。

例如:

import json

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

data2 = json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': '))
print(data2)

 上面的代码输出结果为:

{
    "a": "Runoob",
    "b": 7
}

 PS:在Python将某个数据转换为JSON格式后,我们在python中进行type查看数据类型,仍然是str类型,这代表着Python仅仅是将数据改动json的“格式”,并不是在Python中创建了一个json数据类型,在python中没有json数据类型!!!

向某个JSON文件写入数据,我们可以使用:“json.dump”函数,不再是dumps函数。

格式:

dump(要写入的json数据,文件权柄)

JSON向Python转换

JSON向Python转换使用:“json.loads”函数。

例如:

import json
jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)
print(text)

 输出为:

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

 值得注意的是,不同的json对象转换成的Python数据类型也是不同的,详情可以看下表:

对某个JSON文件进行读取,我们可以使用:“json.load”函数,而不是loads函数。

格式:

load(文件权柄)

对于JSON文件操作的示例

存json文件
    info = {'name':'人', 'husband':'人人', 'age':22}
    file = open ('人.json', 'w', encoding='utf-8')
    json.dump(info, filee)
    file.close()
读json文件
    file = open ('人.json', 'r', encoding='utf-8')
    my_info = json.load(file)
    file.close()

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

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

相关文章

51.仿简道云公式函数实战-文本函数-JOIN

1. JOIN函数 JOIN 函数可通过连接符将数组的值连成文本。 2. 函数用法 JOIN(数组,"连接符") 3. 函数示例 如需将复选框中勾选的选项通过”-“组合在一起,则可设置公式为JOIN(复选框组,"-") 4. 代码实战 首先我们在function包下创建text包…

用户态协议栈01-udp收发

文章目录 用户态协议栈01-udp收发前期准备DPDK初始化开始搓udp协议栈配置dpdk定义udp相关变量接受udp数据&&读取包内容接口层拼接udp数据包完整代码 如何启动实验如何编译使用效果 用户态协议栈01-udp收发 实现用户态协议栈最最简单的就是实现Udp的收发,下…

高性能API云原生网关 APISIX安装与配置指南

Apache APISIX是Apache软件基金会下的顶级项目,由API7.ai开发并捐赠。它是一个高性能的云原生API网关,具有动态、实时等特点。 APISIX网关可作为所有业务的流量入口,为用户提供了丰富的功能,包括动态路由、动态上游、动态证书、A…

将SU模型导入ARCGIS,并获取高度信息,多面体转SHP文件(ARCMAP)

问题:将Sketchup中导出的su模型,导入arcgis并得到面shp文件,进而获取各建筑的高度、面积等信息。 思路: (1)导入arcgis得到多面体 (2)转为面shp文件 (3)计算高度/面积等 1、【3D Analyst工具】【转换】【由文件转出】【导入3D文件】(在此步骤之间,建议先建立一个…

flink学习之旅(二)

目前flink中的资源管理主要是使用的hadoop圈里的yarn,故此需要先搭建hadoop环境并启动yarn和hdfs,由于看到的教程都是集群版,现实是只有1台机器,故此都是使用这台机器安装。 1.下载对应hadoop安装包 https://dlcdn.apache.org/h…

linux centos7.9改dns和ip

vi /etc/sysconfig/network-scripts/ifcfg-ens32 :wq后 重启网络服务 systemctl restart network —————————————————————————— 篇外话题 软件下载 xshell可以从腾讯软件中心下载

dpdk协议栈之udp架构优化

dpdk优势 传统网络架构与 DPDK(Data Plane Development Kit)网络架构之间存在许多区别,而 DPDK 的优势主要体现在以下几个方面: 数据包处理性能:传统网络架构中,网络数据包的处理通常由操作系统的网络协议…

探索便捷办公新选择:ONLYOFFICE 桌面编辑器

目录 引言 1. ONLYOFFICE 桌面编辑器简介 2. 功能特点 2.1 多格式支持 2.2 实时协作编辑 2.3 兼容性与格式保持 2.4 丰富的编辑功能 3. 使用方法 3.1 下载安装 3.2 打开文档 3.3 编辑文档 3.4 保存和共享 4. 注意事项 4.1 版本更新 4.2 网络连接 4.3 安全性 5.…

【电子书】移动开发

整理了一些互联网电子书,推荐给大家 移动开发 Android App开发入门与项目实战.epubAndroid Studio应用开发实战详解.epubAndroid Studio开发实战:从零基础到App上线.epubAndroid 游戏开发大全(第二版).epubAndroid 源码设计模式…

k8s分布式图床(k8s,metricsapi,vue3+ts)

image-manage 文档 warning 注意⚠️ 1. 你需要至少一个mysql数据库 2. 你需要至少一个redis数据库 3. 你需要一个版本至少 kubernetes 1.29的集群(集群可选) ::: 单机部署(docker) # clone the project docker run -p 8080:8080 \-v 你的数据目录:/app\-e CONFIG_ISCLUST…

C语言函数递归

一、什么是递归 递归实际上就是函数自己调用自己。 递归在书写的时候,有2个必要条件: • 递归存在限制条件,当满足这个限制条件的时候,递归便不再继续。 • 每次递归调用之后越来越接近这个限制条件。 在下面的例子中&#xff0…

WPF 附加属性+控件模板,完成自定义控件。建议观看HandyControl源码

文章目录 相关连接前言需要实现的效果附加属性添加附加属性,以Test修改FontSize为例依赖属性使用触发器使用直接操控 结论 控件模板,在HandyControl的基础上面进行修改参考HandyControl的源码控件模板原型控件模板 结论 相关连接 WPF控件模板(6) WPF 附加…

Android之UI Automator框架源码分析(第九篇:UiDevice获取UiAutomation对象的过程分析)

前言 通过UiDevice的构造方法,UiDevice对象持有的几个对象一部分是在构造方法中创建的(初始化),它持有的每个对象都是分析的重点 备注:当前对象持有的对象,它的位置一般在实例变量创建时或者构造方法中&…

ChatGPT国内快速上手指南

ChatGPT简介 ChatGPT是由OpenAI团队研发的自然语言处理模型,该模型在大量的互联网文本数据上进行了预训练,使其具备了深刻的语言理解和生成能力。 GPT拥有上亿个参数,这使得ChatGPT在处理各种语言任务时表现卓越。它的训练使得模型能够理解上…

044-WEB攻防-PHP应用SQL盲注布尔回显延时判断报错处理增删改查方式

044-WEB攻防-PHP应用&SQL盲注&布尔回显&延时判断&报错处理&增删改查方式 #知识点: 1、PHP-MYSQL-SQL注入-方式增删改查 2、PHP-MYSQL-SQL注入-布尔&延迟&报错 3、PHP-MYSQL-SQL注入-数据回显&报错处理 演示案例: ➢PHP…

不懂且不会用循环OB块的plc工程师不是优秀的plc工程师

本章介绍了循环中断OB的功能、与循环中断OB相关的指令、执行过程以及举例说明的内容。 循环中断 OB ● 循环中断 OB 的功能 循环中断 OB 在经过一段固定的时间间隔后执行相应的中断 OB 中的程序。 S7-1500 最多支持 20 个循环中断 OB ,在创建循环中断 OB 时设定…

✅技术社区项目—JWT身份验证

通用的JWT鉴权方案 JWT鉴权流程 基本流程分三步: ● 用户登录成功之后,后端将生成的jwt返回给前端,然后前端将其保存在本地缓存; ● 之后前端与后端的交互时,都将iwt放在请求头中,比如可以将其放在Http的身份认证的请求头 Author…

Mysql 高可用解决方案

1.环境说明 操作系统:centos7.7 主服务器:node2(192.168.1.102) 从服务器:node3(192.168.1.103) keepalived中虚拟ip(VIP):192.168.1.100 2.准备事项 主库和从库数据库的版本一致把主库的数据同步给从库一份 3.主库配置 3.1 编辑MySQL配…

【踩坑】修复报错 you should not try to import numpy from its source directory

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 报错如下: 修复方法一: pip install pyinstaller5.9 修复方法二: pip install numpy1.24.1

ActiveMq PUT任意文件上传漏洞(CVE-2016-3088)漏洞复现

ActiveMQ ActiveMQ Web控制台分为三个应用程序:其中admin,api和fileserver,其中admin是管理员页面,api是界面,fileserver是用于存储文件的界面;admin和api需要先登录才能使用,fileserver不需要…