Python第十四章 Json操作

第十四章 Json操作

14.1 JSON概述

什么是JSON

  • JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
  • JSON本质上是一个带有特定格式的字符串

主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。

各种编程语言存储数据的容器不尽相同,在Python中有字典dict这样的数据类型, 而其它语言可能没有对应的字典。

为了让不同的语言都能够相互通用的互相传递数据,JSON就是一种非常良好的中转数据格式。如下图,以Python和C语言互传数据为例:

image-20230928161538216


json格式的语法要求有两类

{"name":"admin","age":18} 
# 或者  
[{"name":"admin","age":18},{"name":"root","age":16},{"name":"张三","age":20}] 

【说明】Python中使用JSON是有优势的,JSON相当于Python中的字典或者Python中的字典列表

下面要学习的就是如何转换Python和JSON

14.2 JSON转换

Python数据和Json数据的相互转化

  • Python→JSON:json.dumps(py_data)
  • JSON→Python:json.loads(json_str)

JSON对应的Python有两种类型:字典、字典列表,因此分开展示

【说明】JSON转换成字典后,key和value都是字符串,如果有需要要进行类型转换

1、Python字典 & JSON

import json

# 类型转换
py_dict = {"name": "mary", "age": 18}
json_data = json.dumps(py_dict)
print(json_data)  # {"name": "mary", "age": 18}
print(type(json_data))  # <class 'str'>

py_data = json.loads(json_data)
print(py_data)  # {'name': 'mary', 'age': 18}
print(type(py_data))  # <class 'dict'>

# json转换为py对象之后的操作
print(py_data["name"])  # mary
print(py_data["age"])  # 18

2、Python字典列表 & JSON

# 导入JSON模块
import json

# 类型转换
py_list = [{"name": "mary", "age": 16}, {"name": "lucy", "age": 18}]

json_data = json.dumps(py_list)
print(json_data)  # [{"name": "mary", "age": 16}, {"name": "lucy", "age": 18}]
print(type(json_data))  # <class 'str'>

py_data = json.loads(json_data)
print(py_data)  # [{'name': 'mary', 'age': 16}, {'name': 'lucy', 'age': 18}]
print(type(py_data))  # <class 'list'>

# JSON转换成py对象之后的操作
print(py_data[0])  # {'name': 'mary', 'age': 16}
print(type(py_data[0]))  # <class 'dict'>
print(py_data[0]["name"])  # mary
print(py_data[0]["age"])  # 16

【说明】转换成list[dict]之后,要先用索引将字典取出来,比如list[0],然后就按照字典操作即可

3、中文问题

import json

py_list = [{"name": "张三", "age": 16}, {"name": "李四", "age": 18}]

json_data = json.dumps(py_list)
print(json_data)  # [{"name": "\u5f20\u4e09", "age": 16}, {"name": "\u674e\u56db", "age": 18}]
print(type(json_data))  # <class 'str'>

如图,Python对象中有中文的话,转换成JSON字符串会按照ASCII编码,如果有中文可以带上参数ensure_ascii=False

import json

py_list = [{"name": "张三", "age": 16}, {"name": "李四", "age": 18}]

json_data = json.dumps(py_list, ensure_ascii=False)
print(json_data)  # [{"name": "张三", "age": 16}, {"name": "李四", "age": 18}]
print(type(json_data))  # <class 'str'>

14.3 JSON相关网址

在普通的文本文件中,JSON是没有格式化的,因此可以使用在线工具进行格式化

  • 懒人在线工具http://www.kuquidc.com/

image-20230928173514052

可以以树的形式展开

image-20230928173545135

posted @ 2023-10-07 14:01  Crispy·Candy  阅读(24)  评论(0编辑  收藏  举报