π ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON Python? Π£ΡΠΈΠΌΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π° ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΠ΅
Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ JSON Π² Python, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ utf-8 ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ escape (\uXXXX), Π³Π΄Π΅ XXXX - ΡΡΠΎ ΡΠ΅ΡΡΠ½Π°Π΄ΡΠ°ΡΠ΅ΡΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈΠΌΠ²ΠΎΠ»Π°.
import json
data = {
"name": "ΠΠ°ΡΠΈΡ",
"age": 25,
"city": "\u041c\u043e\u0441\u043a\u0432\u0430"
}
json_data = json.dumps(data, ensure_ascii=False)
print(json_data)
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° JSON Π² Python. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ json.dumps()
Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ensure_ascii
Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ False
, ΡΡΠΎΠ±Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² JSON Π±Π΅Π· ΠΈΡ
ΡΡΠΊΠ΅ΠΉΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON Π² Python
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ JSON Π² Python Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python.
1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ
Π Python Π΅ΡΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ json
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ JSON. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ dump
ΠΈΠ»ΠΈ dumps
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ json
.
import json
data = {
"ΠΈΠΌΡ": "ΠΠ²Π°Π½",
"ΡΠ°ΠΌΠΈΠ»ΠΈΡ": "ΠΠ΅ΡΡΠΎΠ²"
}
# ΠΠ°ΠΏΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ» Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ dump
with open("data.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False)
# ΠΠ°ΠΏΠΈΡΡ Π² JSON ΡΡΡΠΎΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ dumps
json_string = json.dumps(data, ensure_ascii=False)
print(json_string)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ»ΠΎΠ²Π°ΡΡ data
Ρ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ dump
Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ Π² JSON ΡΠ°ΠΉΠ» Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ensure_ascii=False
. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ»Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ UTF-8.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ JSON ΡΡΡΠΎΠΊΡ, Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ°ΠΉΠ», Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ dumps
Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ensure_ascii=False
.
2. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pyyaml
ΠΡΠ΅ ΠΎΠ΄Π½ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pyyaml
. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΠ΅ΠΉ Π² JSON ΠΈ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΎΠΉ.
import yaml
data = {
"ΠΈΠΌΡ": "ΠΠ²Π°Π½",
"ΡΠ°ΠΌΠΈΠ»ΠΈΡ": "ΠΠ΅ΡΡΠΎΠ²"
}
# ΠΠ°ΠΏΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ» Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ pyyaml
with open("data.json", "w", encoding="utf-8") as file:
yaml.dump(data, file, allow_unicode=True)
# ΠΠ°ΠΏΠΈΡΡ Π² JSON ΡΡΡΠΎΠΊΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ pyyaml
json_string = yaml.dump(data, allow_unicode=True)
print(json_string)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ dump
ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ pyyaml
Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ»ΠΎΠ²Π°ΡΡ Π² JSON ΡΠ°ΠΉΠ» ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ JSON ΡΡΡΠΎΠΊΠΈ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ allow_unicode=True
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ codecs
Π’ΡΠ΅ΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ codecs
Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² JSON ΡΠ°ΠΉΠ».
import json
import codecs
data = {
"ΠΈΠΌΡ": "ΠΠ²Π°Π½",
"ΡΠ°ΠΌΠΈΠ»ΠΈΡ": "ΠΠ΅ΡΡΠΎΠ²"
}
# ΠΠ°ΠΏΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ» Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ codecs
with codecs.open("data.json", "w", encoding="utf-8") as file:
json.dump(data, file, ensure_ascii=False)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ dump
ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ json
Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ codecs
Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ» Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ UTF-8.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΏΠΈΡΡ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΡ Π² JSON ΡΠ°ΠΉΠ»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python Π½Π΅ ΡΠ»ΠΎΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ°, ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π°ΡΠΈΡ
ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ json
, ΡΡΠΎΡΠΎΠ½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ pyyaml
ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ codecs
Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ json
.
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, UTF-8) ΠΏΡΠΈ Π·Π°ΠΏΠΈΡΠΈ Π² JSON ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ JSON ΡΡΡΠΎΠΊΠΈ, ΡΡΠΎΠ±Ρ ΠΊΠΈΡΠΈΠ»Π»ΠΈΡΠ° Π±ΡΠ»Π° Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ.