Python入门进阶教程-JSON操作

「关注我,和我一起放下灵魂,让灵魂去搬砖。」

Python JSON操作

Python版本3.8.0,开发工具:Pycharm

什么是JSON?

JSON 的全称是 JavaScript Object Notation,即 JavaScript 对象符号,它是一种轻量级、跨平台、跨语言的数据交换格式,其设计意图是把所有事情都用设计的字符串来表示,这样既方便在互联网上传递信息,也方便人进行阅读。

JSON 主要有两种数据结构:

  • 由 key-value对组成的数据结构。这种数据结构在不同的语言中有不同的实现。例如在 Python中是一种 dict 对象;在C语言中是一个struct;在其他语言中,则可能是 record等。
  • 有序集合。这种数据结构在 Python 中对应于列表;在其他语言中,可能对应于 list等。

JSON类型转换

当程序把 JSON 对象或 JSON 字符串转换成 Python 对象时,从 JSON 类型到 Python 类型的转换关系如下所示:

JSON类型 Python类型
JSON 类型 Python 类型
对象(object) 字典(dict)
数组(array 列表(list)
字符串(string) 字符串(str)
整数(number(int)) 整数(int)
实数(number(real)) 浮点数(float)
true True
false False
null None

同样的,当程序把 Python 对象转换成 JSON 格式字符串时,从 Python 类型到 JSON 类型的转换关系如下所示:

Python类型 JSON类型
Python 类型 JSON 类型
字典(dict) 对象(object)
列表(list)和元组(tuple) 数组(array)
字符串(str) 字符串(string)
整型、浮点数,枚举 数值型(number)
True true
False false
None null

json模块

Python3 中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:

  • json.dumps(): 对数据进行编码。
  • json.loads(): 对数据进行解码。

使用dumps函数对数据进行编码

import json
# 创建字典类型Person
person = {
    'name': '知秋小梦',
    'gender': 'male',
    'age': 18
}
# Python字典类型转换为JSON对象
json_person = json.dumps(person)
print(json_person)

# 输出
{"name": "\u77e5\u79cb\u5c0f\u68a6", "gender": "male", "age": 18}

输出的中文是中文的ascii字符码,而不是真正的中文。
这是因为json.dumps 序列化时对中文默认使用的ascii编码
因此需要使用ensure_ascii=False来指定出中文

# 设置不适用ascll编码
json_person = json.dumps(person,ensure_ascii=False)
print(json_person)
# 输出
{"name": "知秋小梦", "gender": "male", "age": 18}

使用loads函数对数据进行解码

扫描二维码关注公众号,回复: 9172708 查看本文章
# 将 JSON 对象转换为 Python 字典
dict_person = json.loads(json_person)
print("person['name']: ",dict_person['name'])
print("person['age']: ", dict_person['age'])

# 输出
person['name']:  知秋小梦
person['age']:  18

json文件

dumps()和loads()主要用于Python和json对象的相互转化,dump()与load()主要用于读写json文件

# 写入 JSON 数据
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f)
 
# 读取 JSON 数据
with open('data.json', 'r', encoding='utf-8') as f:
    data = json.load(f)

open函数的用法在文件章节有介绍:open函数用法



JSON作为数据存储、交互用的比较多,比如网页cookie、数据交互等,建议掌握!


下节将介绍Python日期操作


系列文章传送门

Python入门进阶教程-多线程与多进程

Python入门进阶教程-正则表达式

Python入门进阶教程-面向对象

Python入门基础汇总


Python系列

Python系列会持续更新,从基础入门到进阶技巧,从编程语法到项目实战。若您在阅读的过程中发现文章存在错误,烦请指正,非常感谢;若您在阅读的过程中能有所收获,欢迎一起分享交流。

如果你也想和我一起学习Python,可以关注我的微信公众号

学习Python,我们不只是说说而已

在这里插入图片描述

发布了34 篇原创文章 · 获赞 24 · 访问量 5003

猜你喜欢

转载自blog.csdn.net/wzg199538/article/details/103324449