简单 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 字符串为 Python 字典.png
本示例中的 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 字符串为 Python 列表.jpg
本示例中的 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)

执行和输出:
转换 Python 类对象为 JSON 字符串.png
可以看到,属性名都被转换成了 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)

执行和输出:
将 Python 类对象的属性转化为 JSON 字符串.png

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)

执行和输出:
转换 Python 元组为 JSON 字符串.png

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])

执行和输出:
转换装有不同数据类型元素的元组为 JSON 字符串.png

参考资料

发布了273 篇原创文章 · 获赞 1324 · 访问量 649万+

猜你喜欢

转载自blog.csdn.net/defonds/article/details/100169462