Python将Unicode或非ASCII数据序列化为JSON原样字符串
作者:admin 时间:2021-12-30 9:25:30 浏览:在本文中,我们将解决以下有关在 Python 中使用 Unicode JSON 数据的常见问题。
将非 ASCII 或 Unicode 数据另存为 JSON 中的 \u 转义序列
在本例中,我们将尝试将 Unicode 数据编码为 JSON。当你想将 Unicode 字符转储为字符而不是转义序列时,此解决方案很有用。
设置ensure_ascii=False
于json.dumps()
进行Unicode原样成JSON。
import json
unicodeData= {
"string1": "明彦",
"string2": u"\u00f8"
}
print("unicode Data is ", unicodeData)
encodedUnicode = json.dumps(unicodeData, ensure_ascii=False) # use dump() method to write it in file
print("JSON character encoding by setting ensure_ascii=False", encodedUnicode)
print("Decoding JSON", json.loads(encodedUnicode))
输出:
unicode Data is {'string1': '明彦', 'string2': 'ø'}
JSON character encoding by setting ensure_ascii=False {"string1": "明彦", "string2": "ø"}
Decoding JSON {'string1': '明彦', 'string2': 'ø'}
注意:此示例对于将 Unicode 字符串按原样存储在 JSON 中很有用。
JSON 序列化 Unicode 数据并将其写入文件
在上面的示例中,我们看到了如何将非 ASCII 或 Unicode 数据另存为 JSON 中的 \u 转义序列。现在,让我们看看如何将 JSON 序列化的 Unicode 数据按原样写入文件。
import json
sampleDict= {
"string1": "明彦",
"string2": u"\u00f8"
}
with open("unicodeFile.json", "w", encoding='utf-8') as write_file:
json.dump(sampleDict, write_file, ensure_ascii=False)
print("Done writing JSON serialized Unicode Data as-is into file")
with open("unicodeFile.json", "r", encoding='utf-8') as read_file:
print("Reading JSON serialized Unicode data from file")
sampleData = json.load(read_file)
print("Decoded JSON serialized Unicode data")
print(sampleData["string1"], sampleData["string1"])
输出:
Done writing JSON serialized Unicode Data as-is into file
Reading JSON serialized Unicode data from file
Decoded JSON serialized Unicode data
明彦 明彦
按原样写入 Unicode 数据后的 JSON 文件
将 Unicode 对象序列化为 UTF-8 JSON 字符串而不是 \u 转义序列
你还可以将 JSON 编码设置为 UTF-8。UTF-8 是最大互操作性的推荐默认值。ensure_ascii=False
使用“ UTF-8 ”设置为 Unicode 数据并将其编码为 JSON 。
import json
# encoding in UTF-8
unicodeData= {
"string1": "明彦",
"string2": u"\u00f8"
}
print("unicode Data is ", unicodeData)
print("Unicode JSON Data encoding using utf-8")
encodedUnicode = json.dumps(unicodeData, ensure_ascii=False).encode('utf-8')
print("JSON character encoding by setting ensure_ascii=False", encodedUnicode)
print("Decoding JSON", json.loads(encodedUnicode))
输出:
unicode Data is {'string1': '明彦', 'string2': 'ø'}
Unicode JSON Data encoding using utf-8
JSON character encoding by setting ensure_ascii=False b'{"string1": "\xe6\x98\x8e\xe5\xbd\xa6", "string2": "\xc3\xb8"}'
Decoding JSON {'string1': '明彦', 'string2': 'ø'}
使用 Python 将 Unicode 和 ASCII(混合数据)编码为 JSON
在这个例子中,我们将看到如何将 Python 字典编码为包含 Unicode 和 ASCII 数据的 JSON。
import json
sampleDict = {"name": "明彦", "age": 25}
print("unicode Data is ", sampleDict)
# set ensure_ascii=True
jsonDict = json.dumps(sampleDict, ensure_ascii=True)
print("JSON character encoding by setting ensure_ascii=True")
print(jsonDict)
print("Decoding JSON", json.loads(jsonDict))
# set ensure_ascii=False
jsonDict = json.dumps(sampleDict, ensure_ascii=False)
print("JSON character encoding by setting ensure_ascii=False")
print(jsonDict)
print("Decoding JSON", json.loads(jsonDict))
# set ensure_ascii=False and encode using utf-8
jsonDict = json.dumps(sampleDict, ensure_ascii=False).encode('utf-8')
print("JSON character encoding by setting ensure_ascii=False and UTF-8")
print(jsonDict)
print("Decoding JSON", json.loads(jsonDict))
输出:
unicode Data is {'name': '明彦', 'age': 25}
JSON character encoding by setting ensure_ascii=True
{"name": "\u660e\u5f66", "age": 25}
Decoding JSON {'name': '明彦', 'age': 25}
JSON character encoding by setting ensure_ascii=False
{"name": "明彦", "age": 25}
Decoding JSON {'name': '明彦', 'age': 25}
JSON character encoding by setting ensure_ascii=False and UTF-8
b'{"name": "\xe6\x98\x8e\xe5\xbd\xa6", "age": 25}'
Decoding JSON {'name': '明彦', 'age': 25}
Python转义非ASCII字符,同时将其编码为JSON
让我们看看如何存储所有传入的非 ASCII 字符在 JSON 中转义。这是一种表示 Unicode 字符的安全方式。通过设置,ensure_ascii=True
我们确保生成的 JSON 是有效的 ASCII 字符(即使它们里面有 Unicode)。
import json
unicodeData= {
"string1": "明彦",
"string2": u"\u00f8"
}
print("unicode Data is ", unicodeData)
# set ensure_ascii=True
encodedUnicode = json.dumps(unicodeData, ensure_ascii=True)
print("JSON character encoding by setting ensure_ascii=True")
print(encodedUnicode)
print("Decoding JSON")
print(json.loads(encodedUnicode))
输出:
unicode Data is {'string1': '明彦', 'string2': 'ø'}
JSON character encoding by setting ensure_ascii=True
{"string1": "\u660e\u5f66", "string2": "\u00f8"}
Decoding JSON
{'string1': '明彦', 'string2': 'ø'}
总结
本文介绍了有关在 Python 中使用 Unicode JSON 数据的常见问题,希望对你有所帮助。
您可能对以下文章也感兴趣
标签: Python
- 站长推荐