Cara Mengurai JSON di Python - Langkah Mudah

Komentar: 0

JSON adalah singkatan dari JavaScript Object Notation. JSON tidak hanya ringan tetapi juga mudah dibaca dan ditulis oleh manusia. Demikian juga, mesin akan merasa mudah untuk mengurai dan menghasilkannya. Penguraian sangat penting ketika berurusan dengan konten dari API, file konfigurasi, atau sumber info tersimpan lainnya untuk pengembang Python mana pun. Artikel ini memandu Anda melalui dasar-dasar penguraian JSON menggunakan modul Python, termasuk cara menggunakan json.dump python untuk menyimpan konten.

Memahami JSON dan strukturnya

Struktur JSON merinci detail dalam pasangan kunci-nilai. Berikut adalah contoh dasar dari sebuah objek:


{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"]
}

Contoh penguraian json python ini berisi: string, angka, boolean, dan larik. Membiasakan diri dengan struktur ini akan membuat Anda lebih mudah untuk bekerja di Python.

Berinteraksi dengan JSON di Python

Dengan mengimplementasikan python, Anda dapat mem-parsing string json dengan mudah menggunakan modul bawaan di Python. Modul ini mencakup metode seperti json.loads() untuk membaca dari string, dan json.load() untuk membaca dari file. Sebaliknya, json.dumps() dan json.dump Python digunakan untuk menulis informasi ke string dan file, masing-masing.

Membaca data JSON

Mari kita lihat cara membaca data JSON, yang akan kita bahas selanjutnya.

Membaca JSON dari sebuah string

Jika Anda ingin membaca json di python, gunakan json.loads() untuk mem-parsing sebuah string dan mengubahnya menjadi sebuah objek Python:


import json

json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)

print(data)

Keluaran:

1.png

Mengekstrak JSON dari sebuah berkas

Untuk mengekstrak informasi dari sebuah berkas, gunakan metode ini: json.load() dan buka berkas json di python:


import json

with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

Keluaran:

2.png

Menulis data JSON

Sebelum menulis, Anda sering kali perlu membaca atau memuat info yang sudah ada - dan di situlah metode python load json file menjadi berguna. Setelah info dimuat dengan benar, Anda dapat memanipulasi dan menulisnya kembali dalam berbagai format.

Menulis JSON ke string

Untuk menulis info ke sebuah string, gunakan metode Python json.dumps:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

json_string = json.dumps(data)
print(json_string)

Keluaran:

3.png

Menulis JSON ke file

Untuk menulis rincian berkas ini, gunakan metode Python json.dump:


import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

with open('data.json', 'w') as file:
    json.dump(data, file)

Mengelola JSON Bersarang Tingkat Lanjut

Objek bersarang adalah hal yang umum ketika bekerja dengan struktur informasi yang lebih kompleks, yang dapat dengan mudah menangani struktur bersarang ini.


import json

nested_json_string = '''
{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"],
    "address": {
        "street": "123 Main St",
        "city": "Wonderland"
    }
}
'''

data = json.loads(nested_json_string)
print(data['address']['city'])

Keluaran:

4.png

Penyandi JSON khusus

Bahasa ini tidak dapat secara otomatis mengubah semua objek kustom menjadi JSON. Dalam kasus tersebut, Anda harus membuat penyandi khusus.


import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

class StudentEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Student):
            return obj.__dict__
        return super().default(obj)

student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)

Keluaran:

5.png

Dekoder JSON khusus

Untuk melakukan deserialisasi menjadi objek khusus, Anda harus mengimplementasikan dekoder khusus yang tahu cara menanganinya.


import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

def student_decoder(dct):
    return Student(dct['name'], dct['age'], dct['is_student'])

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)

Keluaran:

6.png

Menangani masalah umum

Bekerja dengan detail data dapat menyebabkan beberapa kesalahan umum, terutama ketika mengurai, menghasilkan, atau mengakses konten terstruktur. Menggunakan pengurai json python yang andal dapat membantu mengidentifikasi dan memperbaiki masalah ini dengan lebih efisien. Berikut adalah beberapa yang paling umum:

Format JSON tidak valid

Kesalahan umum saat mem-parsing file json adalah menemukan format yang tidak valid. Hal ini membutuhkan tanda kutip ganda di sekitar kunci dan nilai string, serta penempatan tanda kurung dan tanda kurung yang tepat.


import json

invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
    data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
    print(f"Invalid JSON format: {e}")

Keluaran:

7.png

Menangani kunci yang hilang

Terkadang, konten tidak menyertakan semua kunci yang Anda harapkan. Dengan menggunakan metode get(), Anda dapat menangani kunci yang hilang dengan aman dengan mengembalikan nilai default alih-alih memunculkan kesalahan.


import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)

Debugging masalah penguraian JSON

Gunakan modul pdb untuk mengatur breakpoint dan men-debug kode penguraian Anda.


import json
import pdb

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)

Contoh praktis penanganan JSON dalam web scraping

Pengikisan web biasanya melibatkan pengambilan konten dari layanan yang mengembalikan informasi yang diperoleh. Di bawah ini adalah contoh yang menggunakan pustaka permintaan bersama dengan titik akhir https://httpbin.org/anything.

Sebelum kita mulai, pastikan Anda telah menginstal paket permintaan:


pip install requests

Ketika bekerja dengan konten terstruktur, Anda dapat menggunakan pustaka permintaan untuk mempermudah. Cukup keluarkan permintaan GET dan URL melalui requests.get(url). Kemudian, Anda dapat mem-parsing respons dengan response.json(). Dari sana, Anda dapat dengan mudah mengakses bagian informasi tertentu seperti tajuk, agen pengguna, asal, atau URL permintaan dan mencetaknya sesuai kebutuhan.

Kode ini mengandung penanganan kesalahan yang kuat; kode ini menangkap json.JSONDecodeError ketika terjadi kesalahan decoding, dan KeyError ketika kunci tertentu tidak ada, akibatnya membuat program ini terlindungi dari kerusakan 'tidak ada data'. Oleh karena itu, ketahanan kode tersebut memungkinkannya untuk menangani tugas-tugas penggalian web yang sebenarnya dengan sempurna.


import requests
import json

url = 'https://httpbin.org/anything'

response = requests.get(url)

try:
    data = response.json()

    # Mengekstraksi data spesifik dari respons JSON
    headers = data['headers']
    user_agent = headers.get('User-Agent', 'N/A')
    origin = data.get('origin', 'N/A')
    url = data.get('url', 'N/A')

    print(f"User Agent: {user_agent}")
    print(f"Origin: {origin}")
    print(f"URL: {url}")

except json.JSONDecodeError:
    print("Error decoding JSON response")

except KeyError as e:
    print(f"Key error: {e} not found in the JSON response")

8.png

Setiap pengembang harus tahu cara mem-parsing file json di python. Dengan modul dan cara terbaik untuk melakukannya yang disorot oleh panduan ini, Anda akan dapat membaca, menulis, dan men-debug dengan cukup cepat. Ini berarti menguji kode Anda secara teratur dan menggunakan alat yang tepat dan fitur-fitur terbaru untuk berkinerja lebih baik. Panduan ini berfokus pada penguraian data json di python untuk membantu Anda menguasai tugas-tugas ini secara efisien.

Ketika melakukan penguraian web, penguraian menjadi sangat penting karena konten dari API web sering kali hadir dalam format ini. Dengan menjadi terampil dalam memproses dan memanipulasinya, Anda dapat mengekstrak informasi berharga dari berbagai sumber secara efisien.

Kesimpulan

Penguraian adalah keterampilan utama bagi setiap pengembang yang bekerja dengan API web, file konfigurasi, atau sumber eksternal. Menangani informasi-baik membaca dari string, file, menulis output terstruktur, atau berurusan dengan objek bersarang dan kustom-disederhanakan melalui modul bawaan dalam Python. Pengembang dapat membuka metode json.load(), json.loads(), json.dump(), json.dumps() Python dan mempelajari cara menangani masalah umum, mengimplementasikan enkoder atau dekoder khusus, dan membuat aplikasi khusus untuk interaksi informasi yang kuat dan dapat diandalkan. Mengingat format ini adalah standar web untuk bertukar informasi, keterampilan ini sangat berharga dalam mengikis, memanipulasi konten, dan mengintegrasikan beberapa layanan melalui API. Menggunakan kode python sederhana untuk membaca file json membuat penguraian file json dalam python dapat diakses untuk proyek apa pun, sementara json.dump python memungkinkan penyimpanan materi kembali secara efisien.

Komentar:

0 komentar