简单 Python 快乐之旅之:Python 基础语法之 JSON 专题
文章目录
1. 解析 JSON 字符串示例
要将 JSON 字符串解析为一个 Python 对象,你可以使用 Python 内建 json 库。json 包里的 loads() 函数用于解析 JSON 串。
import json
pythonObj = json.loads(jsonStr)
其中,jsonStr 是一个包含 JSON 数据的字符串,而 json.loads() 将返回一个 Python 对象。基于 JSON 字符串的数据结构,返回 Python 对象的数据类型将为列表或字典。
1.1. 解析 JSON 字符串为 Python 字典
接下来我们创建一个包含 JSON 数据的字符串,然后使用 json.loads() 函数来对其进行解析。
# Parse JSON String to Python Dictionary
import json
jsonstr = '{"name":"Tesla", "age":2, "city":"New York"}'
pythonOjb = json.loads(jsonstr)
print(type(pythonOjb))
print(pythonOjb)
name = pythonOjb["name"]
print(name)
执行和输出:
本示例中的 JSON 字符串是一个内含多个键值对的单一元素。因此 loads() 函数对该 JSON 字符串解析得到的数据类型是为字典。
1.2. 解析 JSON 字符串为 Python 列表
接下来我们来看另一种内含多个键值对的一组元素的 JSON 字符串,我们同样使用 json.loads() 函数对其进行解析。
# Parse JSON String to Python List
import json
jsonStr = '[{"name":"Tesla", "age":2, "city":"New York"}, {"name":"Jim", "age":3, "city":"Boston"}]'
pythonObj = json.loads(jsonStr)
print(type(pythonObj))
print(pythonObj)
print(type(pythonObj[0]))
print(pythonObj[0])
city = pythonObj[1]["city"]
print(city)
执行和输出:
本示例中的 JSON 字符串包含有多组元素。因此由 loads() 函数解析返回的数据类型是一个列表,而该列表中元素的数据类型是为字典。
2. 如何将 Python 类对象转化为 JSON 字符串?
要将一个 Python 类对象转化为 JSON 字符串,或者将类对象的属性保存为 JSON 字符串,使用 json.dumps() 方法。
jsonStr = json.dumps(myobject.__dict__)
其中,
- json 是模块名。
- dumps 是讲 Python 对象转换为 JSON 字符串的方法。她将返回一个 JSON 字符串。
- myobject 是 Python 类对象,myobject.dict 用于 拿到对象属性的字典版本。
2.1. 转换 Python 类对象为 JSON 字符串
在接下来的示例中,我们定义了一个 Python 类,然后创建了一个该类的对象,最后将其属性转化为一个 JSON 字符串。
# Convert Python Class Object to JSON string
import json
class Laptop:
name = 'My Laptop'
processor = 'Intel Core'
laptop1 = Laptop()
laptop1.name = 'Dell Alienware'
laptop1.processor = 'Intel Core i7'
jsonStr = json.dumps(laptop1.__dict__)
print(jsonStr)
执行和输出:
可以看到,属性名都被转换成了 JSON 的键而属性值则被转换成了 JSON 的值。
2.2. 将 Python 类对象的属性转化为 JSON 字符串
在以下示例中,我们定义了一个拥有不同数据类型如字符串、整型浮点型属性的 Python 类,然后创建了一个该类的对象,然后将该类的对象的属性转换为 JSON 串。
# Convert Properties of Python Class Object to JSON string
import json
class Laptop:
def __init__(self, name, processor, hdd, ram, cost):
self.name = name
self.processor = processor
self.hdd = hdd
self.ram = ram
self.cost = cost
laptop1 = Laptop('Dell Alienware', 'Intel Core i7', 512, 8, 2500.00)
jsonStr = json.dumps(laptop1.__dict__)
print(jsonStr)
执行和输出:
3. Python 元组转换为 JSON 数组
要将 Python 元组转换为 JSON 数组,将元组作为方法的参数传给 json.dumps() 方法。
jsonStr = json.dumps(mytuple)
3.1. 转换 Python 元组为 JSON 字符串
在接下来的示例中,我们创建了一个元组并将其转换为一个 JSON 字符串。
# Convert Python Tuple to JSON String
import json
mytupe = ("python", "json", "mysql")
jsonStr = json.dumps(mytupe)
print(jsonStr)
执行和输出:
3.2. 转换装有不同数据类型元素的元组为 JSON 字符串
接下来我们创建一个由不同数据类型元素组成的元组,然后将其转换为一个 JSON 字符串。之后,我们对该 JSON 串进行解析并访问其元素。
# Convert Python Tuple with Different Datatypes to JSON String
import json
mytupe = ("python", "json", 22, 23.04)
jsonStr = json.dumps(mytupe)
print(type(jsonStr))
print(jsonStr)
jsonArr = json.loads(jsonStr)
print(type(jsonArr))
print(jsonArr[2])
执行和输出: