Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk membaca dan menulis data format JSON dalam Python

Bagaimana untuk membaca dan menulis data format JSON dalam Python

王林
王林ke hadapan
2023-04-24 08:52:141873semak imbas

    Pengenalan kepada data format JSON

    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文本最外层都必须有{}

    Menggunakan Python untuk membaca dan menulis data format 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.

    1. Baca fail 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.

    2. Tulis fail json

    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.

    Tulis JsonUtils sendiri

    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!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam