【Python】构建Json格式的注意事项

我前段时间在写Json的时候,需要搭建一个json格式,然后存入到sql里面。
在这里,我要自己构建一个json格式,并存入到sql里。
但是问题是,我自己用python写的json格式,存入到sql 的时候,就会遇到这个问题:
遇到的问题:
1. 写的时候不是双引号
2. 调用的时候遇到python的解码方式和json的解析方式不一样
原来问题是这个:
JSON 支持字符串(String)类型,但是必须用 双引号 " 括起来。
例如:"hello",单引号会成为问题的。
而如果是用python读取sql 里面的json内容,因为读取出来的是字符串类型,所以要对字符串做转json,而且要处理单引号双引号的问题。
- JSON 数据必须使用双引号,键必须是字符串。
- Python 的
dict和list可以轻松转换为 JSON。 - 使用
json.dumps()和json.dump()可以生成 JSON 字符串或写入文件。 - 复杂类型需要自定义序列化函数。
在 Python 中构建 JSON 格式的数据需要遵循一定的规则,因为 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有特定的语法和数据类型要求。以下是构建 JSON 格式数据的要求和注意事项:
1. JSON 的基本结构
JSON 数据可以是以下两种形式之一:
-
对象(Object):用花括号
{}表示,由键值对组成,键和值之间用冒号:分隔,键值对之间用逗号,分隔。- 示例:
{ "name": "Alice", "age": 25, "is_student": false }
- 示例:
-
数组(Array):用方括号
[]表示,由多个值组成,值之间用逗号,分隔。- 示例:
["apple", "banana", "orange"]
- 示例:
2. JSON 支持的数据类型
JSON 支持以下数据类型:
- 字符串(String):必须用双引号
"括起来。- 示例:
"hello"
- 示例:
- 数字(Number):整数或浮点数。
- 示例:
42或3.14
- 示例:
- 布尔值(Boolean):
true或false。- 示例:
true
- 示例:
- 数组(Array):有序的值列表。
- 示例:
[1, 2, 3]
- 示例:
- 对象(Object):无序的键值对集合。
- 示例:
{"key": "value"}
- 示例:
- 空值(null):表示空值。
- 示例:
null
- 示例:
3. Python 中构建 JSON 数据
在 Python 中,可以使用以下方式构建 JSON 数据:
(1) 使用字典和列表
Python 的字典(dict)和列表(list)可以很容易地转换为 JSON 格式。
-
示例:
import json data = { "name": "Alice", "age": 25, "is_student": False, "courses": ["Math", "Science"], "address": { "city": "Beijing", "postal_code": "100000" } } # 将 Python 对象转换为 JSON 字符串 json_string = json.dumps(data, indent=4) print(json_string) -
输出:
{ "name": "Alice", "age": 25, "is_student": false, "courses": ["Math", "Science"], "address": { "city": "Beijing", "postal_code": "100000" } }
(2) 使用 json.dumps()
json.dumps() 函数可以将 Python 对象(如字典、列表)转换为 JSON 格式的字符串。
-
参数说明:
indent:缩进空格数,用于美化输出。ensure_ascii:是否确保 ASCII 编码,设置为False可以支持非 ASCII 字符(如中文)。sort_keys:是否按键排序。
-
示例:
data = { "name": "张三", "age": 30 } json_string = json.dumps(data, indent=4, ensure_ascii=False) print(json_string) -
输出:
{ "name": "张三", "age": 30 }
(3) 使用 json.dump()
json.dump() 函数可以将 Python 对象直接写入文件。
- 示例:
data = { "name": "Alice", "age": 25 } with open("data.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=4, ensure_ascii=False)
4. 注意事项
- 键必须是字符串:JSON 的键必须是双引号括起来的字符串,不能是单引号或其他类型。
- 值必须符合 JSON 数据类型:Python 的
None会转换为 JSON 的null,True和False会转换为true和false。 - 不支持 Python 特定类型:如
datetime、set等类型需要先转换为 JSON 支持的类型(如字符串)。
5. 处理复杂类型
如果 JSON 数据中包含 Python 的复杂类型(如 datetime),可以自定义序列化函数。
-
示例:
from datetime import datetime def Text_(obj): if isinstance(obj, datetime): return obj.isoformat() raise TypeError("Type not serializable") data = { "name": "Alice", "created_at": datetime.now() } json_string = json.dumps(data, default=Text_, indent=4) print(json_string) -
输出:
{ "name": "Alice", "created_at": "2025-09-21T12:34:56.789012" }
总结
- JSON 数据必须使用双引号,键必须是字符串。
- Python 的
dict和list可以轻松转换为 JSON。 - 使用
json.dumps()和json.dump()可以生成 JSON 字符串或写入文件。 - 复杂类型需要自定义序列化函数。
更多推荐



所有评论(0)