技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

Python将Unicode或非ASCII数据序列化为JSON原样字符串

作者:admin    时间:2021-12-30 9:25:30    浏览:

在本文中,我们将解决以下有关在 Python 中使用 Unicode JSON 数据的常见问题。

将非 ASCII 或 Unicode 数据另存为 JSON 中的 \u 转义序列

在本例中,我们将尝试将 Unicode 数据编码为 JSON。当你想将 Unicode 字符转储为字符而不是转义序列时,此解决方案很有用。

设置ensure_ascii=Falsejson.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  
x
  • 站长推荐
/* 左侧显示文章内容目录 */