技術頻道導航
HTML/CSS
.NET技術
IIS技術
PHP技術
Js/JQuery
Photoshop
Fireworks
服務器技術
操作系統(tǒng)
網(wǎng)站運營

贊助商

分類目錄

贊助商

最新文章

搜索

Python將Unicode或非ASCII數(shù)據(jù)序列化為JSON原樣字符串

作者:admin    時間:2021-12-30 9:25:30    瀏覽:

在本文中,我們將解決以下有關在 Python 中使用 Unicode JSON 數(shù)據(jù)的常見問題。

將非 ASCII 或 Unicode 數(shù)據(jù)另存為 JSON 中的 \u 轉義序列

在本例中,我們將嘗試將 Unicode 數(shù)據(jù)編碼為 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 數(shù)據(jù)并將其寫入文件

在上面的示例中,我們看到了如何將非 ASCII 或 Unicode 數(shù)據(jù)另存為 JSON 中的 \u 轉義序列?,F(xiàn)在,讓我們看看如何將 JSON 序列化的 Unicode 數(shù)據(jù)按原樣寫入文件。

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 數(shù)據(jù)后的 JSON 文件

將 Unicode 對象序列化為 UTF-8 JSON 字符串而不是 \u 轉義序列

你還可以將 JSON 編碼設置為 UTF-8。UTF-8 是最大互操作性的推薦默認值。ensure_ascii=False使用“ UTF-8 ”設置為 Unicode 數(shù)據(jù)并將其編碼為 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(混合數(shù)據(jù))編碼為 JSON

在這個例子中,我們將看到如何將 Python 字典編碼為包含 Unicode 和 ASCII 數(shù)據(jù)的 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 數(shù)據(jù)的常見問題,希望對你有所幫助。

您可能對以下文章也感興趣

標簽: Python  
x
  • 站長推薦
/* 左側顯示文章內(nèi)容目錄 */