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

什么是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://xiahunao.cn/news/2812937.html

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

相关文章

APP软件设计要注意的问题

设计一个成功的APP软件需要考虑多个方面,成功的APP设计需要综合考虑用户体验、性能稳定性、安全性、兼容性、反馈机制、内容质量和法律合规等多个方面,不断优化和改进以满足用户需求并提升用户满意度。以下是一些需要注意的问题,希望对大家有…

免费的通配符(泛域名证书)?

通配符证书(Wildcard SSL Certificate)是一种SSL证书,它可以用于保护一个域名及其所有的子域名。与传统的SSL证书不同,传统SSL证书仅用于保护一个单独的完全限定域名或一个子域名。通配符证书通过在域名前加上一个星号&#xff08…

VUE从0到1创建项目及基本路由、页面配置

一、创建项目:(前提已经安装好vue和npm) 目录:E:\personal\project_pro\ windows下,win+R 输入cmd进入命令行: cd E:\personal\project_pro E:# 创建名为test的项目 vue create test# 用上下键选择vue2或vue3,回车确认创建本次选择VUE3 创建好项目后,使用…

【可实战】被测系统业务架构、系统架构、技术架构、数据流、业务逻辑分析

一、为什么要学习 更深的理解业务逻辑(公司是做什么的?它最重要的商务决策是什么?它里面的数据流是怎么做的?有哪些业务场景?考验你对这家公司、对所负责业务的熟悉程度。公司背后服务器用什么软件搭建的?…

面试官: 反射了解么?

目录 反射 什么是反射 ? 获取Class对象的四种方式 反射相关API 类对象常用API Filed常用API Method常用API Constructors常用API 反射的使用场景? 反射的实现原理 ?(todo) 反射为什么这么慢 ? 反射的优缺点 反射中,Class.forName和ClassLoader的区别…

【前沿热点视觉算法|Sora|GPT4相关】-显著目标检测的深度增强交叉模态级联网络

计算机视觉算法分享。问题或建议,请文章私信或者文章末尾扫码加微信留言。sora 具体介绍和使用方法:OpenAI Sora 下一代生产力:最新小白必看教程 | 解剖Sora的前世今生 | Sora核心源码目前 openai 官方还未开放 sora 灰度,不过根据…

Linux学习笔记:fork()函数

TOC fork()函数的作用是什么? fork函数一般是用来创建进程的,在fork函数执行后,如果成功创建新进程就会出现两个进程,一个是父进程,一个是子进程 就像火影忍者中的分身术一样,fork之后就会进程就会分出和他一样的分身出来 fork()函数怎么使用? 在使用fork函数之前需要加上…

腾讯云4核8G服务器收费贵不贵?

腾讯云4核8G服务器多少钱?轻量应用服务器4核8G12M带宽一年446元、646元15个月,云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元,5年6490.44元,标准型SA2服务器1444.8元一年,在txy.wiki可以查询详细配置和精准报价…

kubeadm部署K8S

部署二主二从 主1:192.168.116.17 主2:192.168.116.18 从1:192.168.116.12 从2:192.168.116.13 注意事项: master节点的cpu核心数必须要求大于2 K8S最新版本并不一定是最好的,相对于旧版本&#xff…

RISC-V SoC + AI | 在全志 D1「哪吒」开发板上,跑个 ncnn 神经网络推理框架的 demo

引言 D1 是全志科技首款基于 RISC-V 指令集的 SoC,主核是来自阿里平头哥的 64 位的 玄铁 C906。「哪吒」开发板 是全志在线基于全志科技 D1 芯片定制的 AIoT 开发板,是目前还比较罕见的使用 RISC-V SoC 且可运行 GNU/Linux 操作系统的可量产开发板。 n…

配置用户通过IPv6方式上网

组网需求 运营商为企业分配了WAN侧的IPv6地址1111:2222:A0EE:6::2/64和LAN侧的IPv6地址1111:3333:E840:2::1/64,企业通过运营商提供的IPv6地址配置上网。 图1 配置用户通过IPv6方式上网 操作步骤 1、在IPS上的配置 interface GigabitEthernet0/0/4 ipv6 enable…

【视频编码\VVC】量化基础知识

量化:是将信号的连续取值(大量离散取值)映射为有限多个离散赋值的过程。实现信号取值多对一的映射。可以有效减少信号取值的空间,进而获得更好的压缩效果。 根据输出和输入数据的类型,可以将量化器分为标量量化SQ和矢…

java中容器继承体系

首先上图 源码解析 打开Collection接口源码&#xff0c;能够看到Collection接口是继承了Iterable接口。 public interface Collection<E> extends Iterable<E> { /** * ...... */ } 以下是Iterable接口源码及注释 /** * Implementing this inte…

代码随想录Leetcode474. 一和零

题目&#xff1a; 代码(首刷看解析 2024年2月26日&#xff09; class Solution { public:// 二维 0 1背包int findMaxForm(vector<string>& strs, int m, int n) {// 1 二维 [i]表示 0 的个数&#xff0c;上限m; [j]表示 1 的个数&#xff0c;上限nvector<vector…

Project_Euler-13 题解

Project_Euler-13 题解 题目 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 2306758820753934617117198…

备战蓝桥杯Day17 - 链表

链表 基本概念 链表是由一系列节点组成的元素集合。 每个节点包含两部分&#xff1a;数据域 item 、指向下一个节点的指针 next 通过节点之间的相互链接&#xff0c;形成一个链表 1. 链表的初始化 # 手动建立链表 # 链表的初始化 class Node(object):def __init__(self, …

超声波气泡传感器检测原理

超声气泡传感器 超声波气泡传感器利用超声波在液体和气体中的声阻抗不同的原理来实现对气泡或液体的识别和检测。它具有体积小、重量轻、使用寿命长、检测灵敏度高、响应速度快等优点&#xff0c;广泛应用于医疗、化工、食品和环保等领域。 检测原理&#xff1a; 超声波气泡…

【ArcGIS】基于DEM/LUCC等数据统计得到各集水区流域特征

基于DEM/LUCC等数据统计得到各集水区流域特征 提取不同集水区各类土地利用类型比例步骤1&#xff1a;划分集水区为独立面单元步骤2&#xff1a;批量掩膜提取得到各集水区土地利用类型比例步骤3&#xff1a;导入各集水区LUCC数据并统计得到各类型占比 提取坡度特征流域面坡度河道…

【网络那些事】

【云计算】 云计算&#xff1a;把计算资源放在某个地方&#xff0c;并通过互联网暴露出来&#xff0c;让用户可以按需使用计算资源的方式&#xff0c;就是所谓的云计算 云计算的三种服务&#xff1a; 云平台专业名词 日常叫法 亚马逊云叫法 虚拟机 EC2 &#xff08;Elasti…

GPT润色指令

1. GPT润色指令 Below is a paragraph from an academic paper. Polish the writing to meet the academic style,improve the spelling, grammar, clarity, concision and overall readability. When necessary, rewrite the whole sentence. Paragraph &#xff1a;你的句子…