Rumah >pembangunan bahagian belakang >Tutorial Python >Bekerja dengan fail JSON di Python, dengan contoh
json in python: panduan komprehensif
JSON (JavaScript Object Notation) adalah format pertukaran data bebas bahasa yang digunakan secara meluas untuk memindahkan data antara pelanggan dan pelayan. Python menyokong JSON melalui pelbagai modul, di antaranya "JSON" dan "SimpleJson" adalah yang paling popular.modul terbina dalam "JSON" Python menyediakan kaedah untuk membaca dan menulis fail JSON. Kaedah "json.load ()" digunakan untuk membaca data JSON dari fail, dan kaedah "json.dump ()" digunakan untuk menulis data JSON ke fail.
Objek Python boleh ditukar kepada format JSON melalui proses bersiri, menggunakan kaedah "json.dump ()" atau "json.dumps ()". Sebaliknya, data JSON boleh ditukar kembali ke objek Python melalui proses deserialization menggunakan kaedah "json.load ()" atau "json.loads ()".
jenis data Python dan JSON mempunyai setara. Sebagai contoh, "dict" Python bersamaan dengan "objek" JSON, manakala "senarai" Python atau "tuple" bersamaan dengan "array" JSON. Pemetaan ini memudahkan proses penukaran antara Python dan JSON.
Dalam tutorial ini, kita akan belajar bagaimana membaca, menulis, dan menghuraikan JSON dalam Python menggunakan contoh yang relevan. Kami juga akan meneroka modul biasa di Python untuk mengendalikan JSON.
JSON adalah format pertukaran data ringan. Ia adalah format biasa untuk memindahkan dan menerima data antara pelanggan dan pelayan. Walau bagaimanapun, permohonan dan tujuannya tidak terhad kepada penghantaran data. Mesin ini dapat dengan mudah menjana dan menghuraikan data JSON. Akronim JSON bermaksud Notasi Objek JavaScript, seperti namanya, adalah subset dari bahasa pengaturcaraan JavaScript.
JSON adalah format pertukaran data piawai dan bebas bahasa. Hampir semua bahasa pengaturcaraan menyokongnya dalam beberapa cara. Ia mempunyai struktur berikut:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>Untuk tujuan contoh kod masa depan, kami akan mengandaikan bahawa JSON di atas disimpan dalam fail yang dinamakan Pekerja.json.
JSON Type Data
Apabila menggunakan objek JSON, Python menukar jenis data JSON kepada setara dan sebaliknya. Jadual berikut menunjukkan jenis data Python dan kesamaan JSON mereka.
Perbezaan antara modul JSON dan SimpleJson dalam Python
Terdapat beberapa modul dalam python untuk pengekodan dan penyahkodan JSON. Dua modul yang paling popular ialah JSON dan SimpleJson. Modul JSON adalah pakej terbina dalam dalam Perpustakaan Standard Python, yang bermaksud kita boleh menggunakannya secara langsung tanpa memasangnya.
Modul SimpleJson adalah modul python luaran untuk pengekodan dan penyahkodan JSON. Ia adalah pakej sumber terbuka yang bersesuaian dengan Python 2.5 dan Python 3.3. Ia juga cepat, mudah, betul dan berskala.SimpleJson dikemas kini lebih kerap, dengan pengoptimuman yang dikemas kini daripada JSON, menjadikannya lebih cepat. Jika anda menggunakan python yang lebih tua di bawah 2.6 dalam projek warisan anda, SimpleJson adalah pertaruhan terbaik anda.
Dalam tutorial ini, kami akan berpegang pada modul JSON.
bagaimana membaca dan menulis fail json di python
Apabila pengaturcaraan di Python, kita sering menemui format data JSON, dan penting untuk memahami cara membaca atau menulis data dan fail JSON. Berikut adalah pra-pemahaman pemprosesan fail di Python yang akan membantu membaca dan menulis fail JSON.bagaimana membaca fail json di python
Lihat contoh kod berikut:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>Berikut adalah output kod di atas:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>Dalam kod di atas, kami membuka fail pekerja.json dalam mod baca. Kaedah json.load () menguraikan data JSON ke dalam kamus python yang disimpan dalam pembolehubah pekerja_dict.
bagaimana menulis json ke fail dalam python
Pertimbangkan coretan kod berikut:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>di sini, kami membuat ibu kamus python dengan data mengenai ibu fiksyen. Kami membuka ibu.json dalam mod tulis. Oleh kerana tidak ada fail sedemikian, fail akan dibuat untuk kami. Kaedah JSON.DUMP () mengkodekan kamus python yang diberikan kepada pembolehubah ibu sebagai setara JSON, yang ditulis pada fail yang ditentukan. Selepas melaksanakan kod di atas, ia akan muncul dalam direktori root folder kami, yang mengandungi fail Mother.json data JSON.
bagaimana untuk menukar kamus python ke json (bersiri)
Serialization adalah proses menukar objek python (dalam kebanyakan kes kamus) ke data atau rentetan yang diformat JSON. Apabila bersiri, jenis python dikodkan sebagai setara JSON. Modul JSON menyediakan dua kaedah -json.dump () dan json.dumps () - untuk bersiri objek python ke dalam format JSON.
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>Kaedah
<code class="language-python">json.dump(obj, fp, indent)</code>json.dump () mempunyai parameter FP, manakala json.dumps () tidak.
Beberapa Parameter Penjelasan:
mari encode objek python ke dalam data yang diformat JSON yang bersamaan dan tuliskannya ke fail.
Pertama, kami membuat Kamus Python:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>
mari encode kamus kami sebagai data JSON dan tulis ke fail:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>
Dalam contoh di atas, kami lulus kamus, penunjuk fail, dan parameter indent ke kaedah JSON.DUMP. Berikut adalah output kod kami. Selepas melaksanakan kod, fail subjek.json yang mengandungi data JSON yang diharapkan akan dijumpai dalam folder root projek kami:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>
output kami mempunyai cetakan yang bagus kerana kami menambah parameter indent dengan nilai 4.
Dalam contoh ini, kami menyandikan objek Python sebagai rentetan JSON. Kami mencipta kamus subjek sebelum ini, jadi kami boleh menggunakannya semula di sini.
mari kita ambil kaedah json.dumps () sebagai contoh:
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>
Berikut adalah output kod di atas:
<code class="language-python">json.dump(obj, fp, indent)</code>
Seperti yang disebutkan sebelumnya, kaedah JSON.DUMPS () digunakan untuk menukar objek python ke rentetan dalam format JSON. Kita dapat melihat dari konsol bahawa data JSON kami mempunyai jenis STR.
Bagaimana untuk menukar JSON ke Kamus Python (deserialization)
Deserialization of JSON adalah untuk menyahkod objek JSON ke dalam objek python setara atau jenis python. Kami boleh menggunakan dua kaedah yang disediakan oleh modul JSON - json.load () dan json.loads () - untuk menukar data diformat JSON ke dalam objek python.
Sila ambil perhatian sintaks berikut:
<code class="language-python">json.dumps(obj, indent)</code>
<code class="language-python">import json subject = { "name": "Biology", "teacher": {"name": "Nana Ama", "sex": "female"}, "students_size": 24, "elective": True, "lesson days": ["Tuesday", "Friday"], }</code>
json.dump () mempunyai parameter fp, dan json.dumps () mempunyai parameter s. Parameter lain kekal tidak berubah.
Beberapa Parameter Penjelasan:
Berikut adalah kandungan fail JSON baru bernama Students.json:
<code class="language-python">with open('subject.json', 'w', encoding='utf-8') as file_handle: json.dump(subject, file_handle, indent=4)</code>
Dalam contoh ini, kami akan menyahkod data JSON dari fail pelajar.json ke objek python:
<code class="language-json">{ "name": "Biology", "teacher": { "name": "Nana Ama", "sex": "female" }, "students_size": 24, "elective": true, "lesson days": [ "Tuesday", "Friday" ] }</code>
Berikut adalah output kod di atas:
<code class="language-python">json_data = json.dumps(subject, indent=4) print(json_data) print(type(json_data))</code>
Dalam coretan kod di atas, fail JSON yang mengandungi senarai pelajar sedang dihuraikan. Data JSON dari fail FILE_HANDLE diluluskan ke kaedah json.load (), yang menguraikannya ke dalam senarai kamus python. Kemudian cetak item senarai ke konsol.
Dalam contoh ini, mari kita urcode data JSON dari titik akhir API dari JsonPlaceholder. Sebelum meneruskan dengan contoh ini, modul permintaan harus dipasang:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>
Berikut adalah output kod di atas:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>
Dalam kod python di atas, kami mendapat respons dari titik akhir yang mengembalikan rentetan format JSON. Kami lulus respons sebagai parameter ke kaedah json.loads (), menyahkodkannya ke dalam kamus python.
Kesimpulan
Dalam pembangunan web moden, JSON adalah format sebenar untuk bertukar data antara pelayan dan aplikasi web. Hari ini, REST API Endpoints mengembalikan data dalam format JSON, jadi penting untuk memahami cara menggunakan JSON.
Python mempunyai modul seperti JSON dan SimpleJson untuk membaca, menulis, dan menghidupkan JSON. Modul JSON disediakan dengan Perpustakaan Standard Python, dan SimpleJson adalah pakej luaran yang mesti dipasang sebelum digunakan.
Apabila membina API yang tenang di Python atau menggunakan API luaran dalam projek kami, kami sering perlu bersiri objek Python ke JSON dan deserialize mereka kembali ke Python. Kaedah yang ditunjukkan dalam artikel ini digunakan oleh banyak projek popular. Langkah -langkah biasanya sama.
(Kod untuk tutorial ini boleh didapati di GitHub.)
Soalan Lazim Mengenai JSON IN PYTHON (FAQ)
Oleh kerana modul JSON, Parsing JSON dalam Python adalah proses yang mudah. Anda boleh menghuraikan rentetan JSON menggunakan fungsi JSON.LOADS (). Berikut adalah contoh:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>
Dalam kod ini, json.loads () menukarkan rentetan JSON ke kamus python, dan anda boleh berinteraksi dengannya seperti yang anda lakukan dengan kamus lain.
json menyediakan fungsi json.dumps (), yang menukarkan objek python ke dalam rentetan json. Berikut adalah contoh:
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>
Dalam kod ini, json.dumps () menukarkan kamus python ke rentetan json.
Anda boleh menggunakan fungsi JSON.LOAD () untuk membaca data JSON dari fail. Berikut adalah contoh:
<code class="language-python">json.dump(obj, fp, indent)</code>
Dalam kod ini, json.load () membaca fail dan menukar data JSON ke dalam objek python.
anda boleh menggunakan fungsi json.dump () untuk menulis data JSON ke fail. Berikut adalah contoh:
<code class="language-python">json.dumps(obj, indent)</code>
Dalam kod ini, json.dump () menulis objek python ke fail sebagai data JSON.
json.dumps () menyediakan pilihan untuk mencetak JSON dengan indah. Berikut adalah contoh:
<code class="language-python">import json subject = { "name": "Biology", "teacher": {"name": "Nana Ama", "sex": "female"}, "students_size": 24, "elective": True, "lesson days": ["Tuesday", "Friday"], }</code>
Dalam kod ini, parameter indent menentukan berapa banyak ruang yang digunakan sebagai indent, yang menjadikan output lebih mudah dibaca.
Modul JSON hanya boleh mengendalikan objek python mudah secara lalai. Untuk objek kompleks seperti kelas tersuai, anda perlu menyediakan fungsi untuk menceritakan bagaimana untuk bersiri objek. Berikut adalah contoh:
<code class="language-json">{ "name": "Chinedu Obi", "age": 24, "country": "Nigeria", "languages": [ "Igbo", "English", "Yoruba" ], "marital status": "single", "employee": true, "experience": [ { "title": "Frontend Engineering Intern", "company": "Andela" }, { "title": "Frontend Engineer", "company": "Paystack" } ] }</code>
Dalam kod ini, fungsi encode_person digunakan untuk menukar objek orang ke dalam format berseri.
Jika anda tidak tahu struktur data JSON terlebih dahulu, anda masih boleh menghuraikannya ke dalam objek Python dan meneroka. Berikut adalah contoh:
<code class="language-python">import json with open('employee.json', 'r', encoding='utf-8') as file_object: employee_dict = json.load(file_object) print(employee_dict)</code>
Dalam kod ini, json.loads () menukarkan rentetan JSON ke kamus python, yang kemudiannya boleh melelehkan untuk meneroka kandungannya.
Untuk fail JSON yang besar, anda boleh menggunakan pakej IJSON yang membolehkan anda menstrimkan data JSON dan bukannya memuat semua data ke dalam memori sekaligus. Berikut adalah contoh:
<code>{'name': 'Chinedu Obi', 'age': 24, 'country': 'Nigeria', 'languages': ['Igbo', 'English', 'Yoruba'], 'marital status': 'single', 'employee': True, 'experience': [{'title': 'Frontend Engineering Intern', 'company': 'Andela'}, {'title': 'Frontend Engineer', 'company': 'Paystack'}]}</code>
Dalam kod ini, ijson.items () menghasilkan aliran objek dari data JSON, yang kemudiannya boleh melelehkan.
Apabila modul JSON menemui JSON yang tidak sah, ia menimbulkan jsondecodeError. Anda boleh menangkap ralat ini dan mengendalikannya dengan betul. Berikut adalah contoh:
<code class="language-python">import json mother = { "name": "Asake Babatunde", "age": 28, "marital status": "Married", "children": ["Ayo", "Tolu", "Simi"], "staff": False, "next of kin": {"name": "Babatune Lanre", "relationship": "husband"}, } with open("mother.json", "w", encoding="utf-8") as file_handle: json.dump(mother, file_handle, indent=4)</code>
Dalam kod ini, cuba/kecuali blok menangkap jsondecodeError dan mencetak mesej ralat.
memudahkan untuk menghantar permintaan HTTP dan memproses respons JSON menggunakan data JSON. Berikut adalah contoh:
<code class="language-python">json.dump(obj, fp, indent)</code>
Dalam kod ini, requests.post () menghantar permintaan pos menggunakan data JSON, dan response.json () menghidupkan respons JSON.
Atas ialah kandungan terperinci Bekerja dengan fail JSON di Python, dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!