JSON字符串和JSON对象互转
字符串转对象
1 2 3 4 5 6 7 8 9 10
| import json
x = '{ "name":"Bill", "age":63, "city":"Seatle"}'
y = json.loads(x)
print(y["age"])
|
对象转字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import json
x = { "name": "Bill", "age": 63, "city": "Seatle" }
y = json.dumps(x)
print(y)
|
类型映射
当 Python 转换为 JSON时,Python 对象会被转换为 JSON(JavaScript)等效项:
| Python |
JSON |
| dict |
Object |
| list |
Array |
| tuple |
Array |
| str |
String |
| int |
Number |
| float |
Number |
| True |
true |
| False |
false |
| None |
null |
JSON和class转换
安装
简单示例
1 2 3 4 5 6 7 8 9 10 11 12 13
| from datetime import datetime from typing import List, Optional from pydantic import BaseModel
class User(BaseModel): id: int name: str = 'John Doe' signup_ts: Optional[datetime] = None friends: List[int] = []
external_data = {'id': '123', 'signup_ts': '2017-06-01 12:22', 'friends': [1, '2', b'3']} user = User(**external_data) print(user)
|
树状数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| import json from typing import List, Optional
from pydantic import BaseModel
class TreeNode(BaseModel): name: str children: Optional[List['TreeNode']] = None
json_str = ''' { "name": "root", "children": [ { "name": "child1", "children": [ ] }, { "name": "child2", "children": [] } ] } '''
json_obj = json.loads(json_str) tree = TreeNode( **json_obj )
print(tree.name) print(tree.children[0].name)
json_str = tree.model_dump_json(indent=4) print(json_str)
|
列表数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import json from pydantic import BaseModel
class User(BaseModel): name: str age: int
json_string = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
data = json.loads(json_string)
users = [User(**item) for item in data]
for user in users: print(user)
|
转python中的dict
转JSON字符串
1
| json_str = obj.model_dump_json(indent=4)
|