Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk membaca dan menulis data format JSON dalam Python
JSON 全称“JavaScript Object Notation”
, diterjemahkan sebagai "JavaScript Object Simplified Notation" atau "JavaScript Object Notation", ialah teks A yang ringan -berasaskan, format pertukaran data terbuka. JSON memainkan peranan penting dalam bidang pembangunan web Jika anda ingin menunjukkan bakat anda dalam bidang pembangunan web, anda mesti memahami JSON. Dalam istilah awam, Json ialah format teks yang biasa digunakan untuk penyimpanan data.
Struktur asas ialah 键: 值
, kunci hanya boleh 字符串
dan nilainya boleh menjadi rentetan, senarai, nombor atau pasangan nilai kunci yang lain.
Data berikut ialah demonstrasi yang baik bagi pelbagai bentuk struktur Json:
{ "max": 1, "1": { "user": 825882638, "type": "image" "title": "超人" }, "a": [ "芝麻开门", { "a": 2 }, "b" ], "c": { "d": 888 "g": 888 } }
注意:所有Json文本最外层都必须有{}
Seterusnya, kami akan menggunakan teks Json di atas sebagai model untuk menerangkan penghuraian fail Json.
Dalam Python, jika kita ingin menghuraikan fail Json, kita mesti mengimport pustaka json
dahulu yang disertakan dengan pemasangan Python, iaitu import json
, dan kemudian kita boleh melaksanakan operasi json.
Kod berikut memberitahu kami cara membaca fail json
with open("./new.json", "r", encoding="utf-8") as f: content = json.load(f)
json.load dibaca terus daripada fail Get teks json dan json.loads membaca teks berkod json dan bukannya fail tempatan.
Kod di atas membaca data json daripada fail "new.json" dalam direktori semasa, dan kemudian kaedah json.load
akan menukar teks json baca kepada kamus dalam Python dan menyimpannya dalam kandungan di antara pembolehubah. Mengendalikan data format JSON dalam Python sebenarnya beroperasi pada gabungan jenis data yang terdiri daripada kamus dan senarai.
Sebagai contoh, jika kita kini ingin mengekstrak nilai bahagian bawah "d" (kedudukan 1 dalam kod) daripada teks json di atas, kita boleh melakukan ini: val=content["c"][ "d"] , supaya nilai d
dapat diperolehi iaitu 333
. Sebagai tambahan kepada contoh di atas, kita juga boleh melihat senarai pakej [] Jika kita ingin mendapatkan nilai "a" (kedudukan 2 dalam kod), kita harus menulis seperti ini: val=content["a" ][ 1]["a"], pada masa ini nilai val ialah 2
.
with open("./new.json", "w", encoding="utf-8") as f: json.dump(data, f, indent=4, ensure_ascii=False)
Kod di atas digunakan untuk menulis data
data ke dalam fail json Kaedah dump
mempunyai banyak parameter kod di atas tiga daripadanya, sila semak yang lain sendiri.
obj
: Parameter pertama di atas digunakan untuk menghantar data yang perlu ditulis ke dalam fail Json.
fp
: Parameter kedua yang dinyatakan di atas digunakan untuk menghantar dalam penuding teks yang perlu ditulis ke dalam data Json
indent
: Jumlah lekukan baris baharu dalam Json. fail diluluskan, biasanya 2 atau 4.
ensure_ascii
: Sama ada untuk membenarkan kod Ascii. Jika ia True
(lalai), semua input aksara Cina akan ditukar kepada uXXXX dan disimpan.
Kod itu datang daripada seorang lelaki besar di github Komen kod memberikan arahan terperinci tentang cara menggunakannya.
import json, os class JsonUtils(): relative_url = "./data/" abstract_url = "file:///home/ubuntu/qqbot/data/rpg/" @staticmethod def __preBuildFile(file: str, *default: Union[str, dict]) -> bool: """ 判断文件及路径是否存在,若不存在则创建并生成对应文件内容 :param file: 文件路径 :param default: 默认文件内容 :return: """ if (not os.path.exists(file)): path = os.path.split(file) if (not os.path.exists(path[0])): os.mkdir(path[0]) with open(file, "w", encoding=utf-8") as f: if (default): arg = default[0] if (isinstance(arg, str)): f.write(arg) elif (isinstance(arg, dict)): try: js = json.dumps(arg, indent=4, ensure_ascii=False) f.write(js) except json.JSONEncoder: return False else: f.write(str(arg)) else: f.write("") return True @classmethod async def read(cls, filename: str, *default) -> Tuple[dict, bool]: """ 读取指定json文件 :param filename: 文件路径 :param default: 若无此文件,创建该文件时写入的内容 :return: [读取到的内容, 是否为新创建的文件] """ file_url = cls.relative_url + filename if (default): res = JsonUtils.__preBuildFile(file_url, default[0]) else: res = JsonUtils.__preBuildFile(file_url) with open(file_url, "r", encoding="utf-8") as f: content = json.load(f) return (content, res) @classmethod async def write(cls, filename: str, data: dict) -> None: """ 写入Json数据 :param filename: 文件路径 :param data: 写入的数据 :return: """ file_url = cls.relative_url + filename JsonUtils.__preBuildFile(file_url) with open(file_url, "w", encoding="utf-8") as f: content = json.dumps(data, indent=4, ensure_ascii=False) f.write(content)
Atas ialah kandungan terperinci Bagaimana untuk membaca dan menulis data format JSON dalam Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!