Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技术学习:Python(03)|欲先善其事,必先利其器(JSON)一

技术学习:Python(03)|欲先善其事,必先利其器(JSON)一

作者头像
艾特
发布于 2023-10-10 06:45:43
发布于 2023-10-10 06:45:43
30800
代码可运行
举报
运行总次数:0
代码可运行

🏮 1 学习前言

🎈1.1我通过本次学习后获得

  • Python中,JSON定义
  • 在Python中,json模块
  • 解析json
  • JSON和XML互转

🎈1.2类型转换对照表 python 中类型向 json 类型的转化对照表,先记住这张表哈:

  • dict ==> object
  • list, tuple ==> array
  • str, unicode ==> string
  • int, long, float ==> number
  • True ==> true
  • False ==> false
  • None ==> null

相反,如果是json类型像python中类型转化,也有如下对照表,也先记住哈:

  • object ==> dict
  • array ==> list, tuple
  • string ==> str, unicode
  • number(int) ==> int, long
  • number(real) ==> float
  • true ==> True
  • false ==> False
  • null ==> None

🎈1.3简单案例 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。在Python中使用 JSON 函数需要导入 json 库:import json

例如下面的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Macbook:c01  $ python3
Python 3.9.9 (main, Nov 21 2021, 03:23:44)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> import json
>>>
>>> person = {"person":{"name":"小明","sex":"男","age":18}}
>>>
>>> show_person = json.dumps(person, sort_keys=True, indent=4, separators=(',', ': '))
>>>
>>> print(show_person)
{
    "person": {
        "age": 18,
        "name": "\u5c0f\u660e",
        "sex": "\u7537"
    }
}
>>>

🏮 2 JSON模块

json 常用的是两个,其实这俩是互相转换的关系。

  • json.dumps:将 Python 对象编码成 JSON 字符串。
  • json.loads:将已编码的 JSON 字符串解码为 Python 对象。

🎈2.1 json.dumps学习

语法格式

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding=“utf-8”, default=None, sort_keys=False, **kw)

案例剖析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 引入json模块
>>> import json
# Python字典
>>> person = {"person":{"name":"小明","sex":"男","age":18}}
# 打印person对象
>>> print(person)
{'person': {'name': '小明', 'sex': '男', 'age': 18}}
# person这个对象的类型
>>> type(person)
<class 'dict'>

# Python字典转json后
>>> python_person = json.dumps(person, sort_keys=True, indent=4, separators=(',', ': '))
>>>
>>> print(python_person)
{
    "person": {
        "age": 18,
        "name": "\u5c0f\u660e",
        "sex": "\u7537"
    }
}
# 类型为字符串
>>> type(show_person)
<class 'str'>

从上面的执行结果,我们不难看出,json格式和Python格式的区别在于:

  • python格式打印输出是单引号,类型为dict。而json格式打印输出是双引号,类型为: str。
  • True 的开头大小写区别

其他参数:

  • skipkeys :是否允许JSON字串编码字典对象时,字典的key不是字符串类型(默认是不允许)
  • ensure_ascii:对中文默认使用的ascii编码,想输出真正的中文需要指定。默认为True。
  • check_circular:如果为false,则循环参考检查将跳过容器类型的循环引用,并将循环引用导致“溢出错误”(或更糟)
  • allow_nan:如果为false,则表示为“ValueError”在中序列化超出范围的“浮点”值(naninf-inf)严格遵守JSON规范,而不是使用JavaScript等价物(NaNInfinity-Infinity)。
  • indent:定义缩进距离大小。例如我上面案例中定义为4。
  • separators :定义分隔符。json元组格式。
  • encoding :编码
  • sort_keys :是否排序

没有罗列的参数可以参考python的源码查看相对应的解析。

🎈2.2 json.loads学习

json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。

语法格式

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])

案例剖析

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 接上面的json.dumps执行
>>> json.loads(python_person)
{'person': {'age': 18, 'name': '小明', 'sex': '男'}}
>>>
>>> print(python_person)
{
    "person": {
        "age": 18,
        "name": "\u5c0f\u660e",
        "sex": "\u7537"
    }
}
>>>
>>> convert_person = json.loads(python_person)
>>>
>>> print(convert_person)
{'person': {'age': 18, 'name': '小明', 'sex': '男'}}
>>>
>>> type(convert_person)
<class 'dict'>

总结老师博文(建议实践下,实际操作过会印象深刻):

不管是dump还是load,带s的都是和字符串相关的,不带s的都是和文件相关的

实例参考老师提供的案例操作下,再次感谢老师提供博文。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python基础教程:序列化
上一节我们学习了文件的读写,把一个字符串(或字节对象)保存到磁盘是一件很容易的事情。但是在实际编程中,我们经常需要保存结构化数据,比如复杂的字典、嵌套的列表等等,这时候就需要我们想办法把这些结构化数据先转变成一个字符串,这个转换过程就叫做“序列化”,这一过程的逆操作就是“反序列化”。
一墨编程学习
2019/05/15
7140
技术学习:Python(04)|欲先善其事,必先利其器(JSON)二
Python除了有自己内置函数,还有标准库以及第三方库。在Python中文网上面,我们可以清晰的看到两个菜单,标准库和第三方库。
艾特
2023/10/10
3020
技术学习:Python(04)|欲先善其事,必先利其器(JSON)二
Python JSON大全
使用 JSON 函数需要导入 json 库:import json。
Python知识大全
2020/02/13
7740
python爬虫(四)
一.JSON模块 Json是一种网络中常用的数据交换类型,一个文件要想在网络进行传输,需要将文件转换为一种便于在网络之间传输的类型,便于人们进行阅读,json就是这样应运而生的。Json中的数据是由键值对构成的,与python中字典不同的是,json将数据转换为一种字符串的形式。 在电脑上如何安装json呢? 打开电脑的cmd,输入pip install json,然后在python命令行中运行 import json,如果没有出现什么错误,说明已经成功安装了。 Json中有许多模块,我目前在爬虫中用到的就两个方法,其他的 方法等碰见了再讲解。 json.loads() #把json字符串转换为python类型 def loads(s, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw): 这是loads的源代码,可以参考一下。
py3study
2020/01/17
5570
json介绍
skipkeys默认为False,如果为True,当字典的key不是str, int, float, bool, None类型时,将会跳过,而不会抱错。否则,为False时,key不是基本类型就会抱错。
努力在北京混出人样
2019/07/02
5160
Python基础——PyCharm版本——第八章、文件I/O(核心2——JSON序列化与反序列化——超重点)
如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。
红目香薰
2022/11/29
4880
Python基础——PyCharm版本——第八章、文件I/O(核心2——JSON序列化与反序列化——超重点)
Python json中一直搞不清的load、loads、dump、dumps、eval
做接口测试的时候,有时候需要对字符串、json串进行一些转换,可是总是得花费一些时间,本质来说还是有可能是这几个方法的使用没有弄清楚。
虫无涯
2023/01/31
1.4K0
Python 进阶(九):JSON 基本操作
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它具有简洁、清晰的层次结构,易于阅读和编写,还可以有效的提升网络传输效率。Python 标准库的 json 模块可以用来处理 JSON 格式数据的基本操作。
Python小二
2020/08/18
6230
Python中JSON的基本使用
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dumps、dump、loads、load。
py3study
2020/01/06
4.1K0
你真的会用Python中的JSON吗,超级详细的JSON常用方法讲解,一文搞定JSON!
Python对象:通常是字典(对应于JSON对象)或列表(对应于JSON数组)。如果JSON字符串表示的是其他类型(如字符串、数字、布尔值、null),则返回相应的Python类型。
小白的大数据之旅
2024/11/20
1.1K0
python操作json(一)
Python 操作json Json语法规则: 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 Json字符串本质上是一个字符串,用单引号表示
py3study
2020/01/06
9490
利用Python搞定json数据<建议收藏>
在实际工作中,尤其是web数据的传输,我们经常会遇到json数据。它不像常见的文本数据、数值数据那样友好,而且它和Python中的字典类型数据又很相像,给很多人造成了困扰。
皮大大
2021/02/27
2.8K0
python模块之json
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。JSON的数据格式其实就是python里面的字典格式,里面可以包含方括号括起来的数组,也就是python里面的列表。
菲宇
2019/06/13
7550
python模块之json
假期玩得开心也不忘充电,学习Python操作JSON,网络数据交换不用愁
国庆长假即将结束了,虽然不上班是很开心,但是假期里走走走、挤挤挤、等等等,也是挺辛苦哒。
Python猫
2019/04/10
6850
关于json.dumps中的参数,例如ensure_ascii
<span style="font-family:Microsoft YaHei;font-size:18px;">     dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw) </span>   编码后的json格式字符串紧凑的输出,而且也没有顺序,因此dumps方法提供了一些可选的参数,让输出的格式提高可读性。  (1)sort_keys是告诉编码器按照字典排序(a到z)输出。
双面人
2019/04/10
1.1K0
python处理JSON
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。在web网络传输数据的时候,我们经常会遇到JSON数据。
皮大大
2023/08/25
6040
Json概述以及python对json的相关操作
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
bear_fish
2018/09/20
7050
Json概述以及python对json的相关操作
Pyhon基础知识之Json序列化与反序列化
  做接口测试的时候,我通常需要对返回的数据转换成json格式的字符串,这样通常使用到json库,而json模块四个方法:dump、dumps、load、loads。其中dump和load是操作文件,dumps和loads是操作python对象的。
全栈测试开发日记
2023/02/02
1.1K0
Pyhon基础知识之Json序列化与反序列化
网络文件操作(一)、json模块
JSON(JavaScriptObjectNotation)格式最初是为JavaScript开发的,但随后成了一种常见文件格式,被包括python在内的众多语言采用。模块JSON让你能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,还可以使用JSON在python程序之间分享数据。更重要的是,JSON数据格式并非python专用的,这让你能够将JSON格式存储的数据与使用其他编程语言的分享。很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供可视化的数据。不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中。用户关闭程序时,你几乎总是要保存他们提供的信息。它的典型结构如下:
狼啸风云
2019/10/22
3K0
半小时掌握Python的JSON模块
本文详细介绍了Python json模块的用法,本文适合Python GUI编程的小白上手。
疯狂软件李刚
2020/06/24
9640
相关推荐
python基础教程:序列化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档