Bagaimana Anda mem-parsing json dengan python?

JSON adalah format populer untuk pertukaran data. Python dikirimkan dengan modul JSON bawaan untuk mengurai dan bekerja dengan data JSON. Dan tutorial ini akan mengajarkan Anda semua tentang bekerja dengan JSON di Python

Di akhir tutorial ini, Anda akan belajar

  • dasar-dasar JSON,
  • cara mengurai dan membuat string JSON dengan Python, dan
  • cara membaca dan menulis ke file JSON dengan Python

Ayo mulai. ⏳

Apa itu JSON?

JSON singkatan dari JavaScript Object Notation, dan merupakan format berbasis teks untuk pertukaran data. Meskipun JSON awalnya terinspirasi oleh objek JavaScript, hampir semua bahasa pemrograman mendukung bekerja dengan JSON

Jika Anda pernah bekerja dengan API atau membaca file konfigurasi—Anda mungkin akan menemukan JSON

📑 Anda mengirim dan menerima data dalam JSON saat meminta API. Dan JSON juga banyak digunakan dalam komunikasi client-server dalam aplikasi perangkat lunak. Selain itu, Anda juga dapat menggunakan JSON untuk penyimpanan data tujuan umum

Format JSON sangat mirip dengan kamus Python. Kamus adalah struktur data bawaan yang kuat di Python yang menyimpan data dalam pasangan nilai kunci

Sebelum melangkah lebih jauh, berikut adalah beberapa poin yang perlu diperhatikan

  • Di Python, objek JSON disimpan sebagai kamus
  • Array di JSON disimpan sebagai daftar Python
  • Di JSON, nilai Boolean dilambangkan sebagai
     = json.loads()
    4 dan
     = json.loads()
    5. Dalam Python, ini dikonversi ke Boolean
     = json.loads()
    6 dan
     = json.loads()
    7

Untuk detail lebih lanjut tentang tipe data yang diterjemahkan dari JSON ke Python, baca dokumennya di sini

Karena modul

 = json.loads()
8 adalah bagian dari pustaka standar Python, Anda tidak perlu menginstalnya. Anda dapat mengimpor ke direktori Anda saat ini, seperti ini

import json

Cara Memuat String JSON dengan Python

Sintaks umum untuk memuat string JSON dengan Python adalah

 = json.loads()

Di Sini,

  •  = json.loads()
    9 adalah kamus Python tempat Anda ingin memuat string JSON,
  •  = json.loads()
    9 adalah string JSON yang valid

Ini memuat

 = json.loads()
_9 ke dalam kamus Python
 = json.loads()
9

Mari kita kode contoh. Di sini

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
_3 adalah string JSON

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''

Dan cuplikan kode di bawah ini menunjukkan bagaimana Anda dapat memuat string JSON

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
3 ke dalam kamus Python menggunakan metode
json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
5. Anda dapat menggunakan fungsi
json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
_6 bawaan untuk memverifikasi bahwa
json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
7 adalah kamus Python

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}

Seperti yang ditunjukkan pada kode di atas, semua kolom dalam string JSON adalah key-value pair di

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
7

Cara Membuat String JSON dengan Python

Misalkan Anda memiliki kamus Python. Jadi bagaimana Anda membuat string JSON darinya?

Anda dapat melakukannya menggunakan metode

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
_9 dengan sintaks ini

 = json.dumps()

Di Sini,

  •  = json.loads()
    9 adalah kamus Python tempat Anda ingin membuat string JSON,
  •  = json.loads()
    _9 adalah string JSON yang dihasilkan

Jadi metode

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
_9 membuang
 = json.loads()
9 ke dalam string JSON
 = json.loads()
9

Ke kamus Python kami yang ada

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
7. mari tambahkan kunci baru
py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
6. Anda dapat melakukannya seperti yang ditunjukkan pada cuplikan kode berikut

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]

Sekarang, mari buang kamus yang dimodifikasi ke string JSON baru

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
7 menggunakan metode
json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
9

json_str2 = json.dumps(py_dict)

print(json_str2)

# Output
{"books": [{"title": "The Wind in the Willows", "author": "Kenneth Grahame", "year": "1908"}, 
{"title": "To the Lighthouse", "author": "Virginia Woolf", "year": "1927"}], 
"movies": [{"title": "The Imitation Game", "year": "2014", "lang": "en", "watched": true}]}

Seperti yang Anda lihat pada contoh di atas, string keluaran JSON sulit dibaca tanpa pemformatan yang tepat. Anda dapat menggunakan parameter opsional

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
_9 untuk menambahkan lekukan

Dan Anda dapat melakukan ini dengan menyetel

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
_9 ke bilangan bulat seperti 2, seperti yang ditunjukkan di bawah ini

json_str2 = json.dumps(py_dict, indent = 2)
print(json_str2)

# Output
{
  "books": [
    {
      "title": "The Wind in the Willows",
      "author": "Kenneth Grahame",
      "year": "1908"
    },
    {
      "title": "To the Lighthouse",
      "author": "Virginia Woolf",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "title": "The Imitation Game",
      "year": "2014",
      "lang": "en",
      "watched": true
    }
  ]
}

Amati bagaimana output telah diformat dengan lekukan, dan mudah untuk ditindaklanjuti

Catatan. 💡 Jika Anda ingin kunci diurutkan dalam urutan abjad, Anda dapat mengatur parameter

 = json.dumps()
1 ke
 = json.loads()
6

Seperti yang Anda lihat pada cuplikan kode di bawah, kunci sekarang telah diurutkan dalam urutan abjad

json_str2 = json.dumps(py_dict, indent = 2, sort_keys=True)
print(json_str2)

# Output
{
  "books": [
    {
      "author": "Kenneth Grahame",
      "title": "The Wind in the Willows",
      "year": "1908"
    },
    {
      "author": "Virginia Woolf",
      "title": "To the Lighthouse",
      "year": "1927"
    }
  ],
  "movies": [
    {
      "lang": "en",
      "title": "The Imitation Game",
      "watched": true,
      "year": "2014"
    }
  ]

Dan kunci sekarang muncul dalam urutan abjad.

 = json.dumps()
3,
 = json.dumps()
4 dan
 = json.dumps()
5

Sejauh ini, Anda telah mempelajari cara bekerja dengan string JSON di Python. Di bagian selanjutnya, Anda akan mempelajari cara bekerja dengan file JSON

Cara Membaca File JSON dengan Python

Untuk membaca file JSON dengan Python, gunakan sintaks berikut

json.load() 

# where  is any valid JSON file.

Perhatikan bagaimana kami menggunakan metode

 = json.dumps()
_6 dan bukan metode
json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
5.
json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
_5 memuat string JSON, sementara
 = json.dumps()
6 memuat file JSON

Anda harus mempertimbangkan untuk menggunakan pengelola konteks saat bekerja dengan file dengan Python. Anda juga dapat mencoba membaca file sebagai berikut, tanpa menggunakan pengelola konteks

 = json.loads()
0

Jika Anda tidak menutup file, akan ada potensi pemborosan sumber daya

Namun, saat bekerja dengan manajer konteks, file ditutup secara otomatis setelah operasi file selesai

Dan Anda dapat menggunakan manajer konteks untuk membaca file, seperti yang ditunjukkan di bawah ini

 = json.loads()
_1

Saat Anda membaca dari file, tentukan mode sebagai telah dibaca—ditunjukkan oleh

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
0 pada kode di atas

Catatan. Untuk menavigasi direktori saat ini dengan mudah, pastikan file JSON berada di folder yang sama dengan

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
1, seperti yang ditunjukkan pada gambar di bawah. Jika file JSON Anda berada di folder yang berbeda, pastikan untuk menentukan jalur ke file tersebut

read-json-file-in-pythonBaca file JSON dengan Python

Di bagian selanjutnya, Anda akan mempelajari cara menulis ke file JSON. ✍

Cara Menulis ke File JSON dengan Python

Untuk menulis ke file JSON yang ada atau membuat file JSON baru, gunakan metode

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
2 seperti yang ditunjukkan

 = json.loads()
_2

Jadi sintaks di atas membuang kamus

 = json.loads()
9 ke dalam file JSON
 = json.loads()
9

Di bagian sebelumnya, kami memiliki kamus

json_str = '''
{
    "books": [
        {
            "title": "The Wind in the Willows",
            "author": "Kenneth Grahame",
            "year": "1908"
        },
        {
            "title": "To the Lighthouse",
            "author": "Virginia Woolf",
            "year": "1927"
        }
    ]
}
'''
7. Sekarang mari kita buang ke dalam file JSON baru. Dan beri nama
py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
6

Dan sel kode berikut menunjukkan bagaimana Anda dapat menggunakan fungsi

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
2

 = json.loads()
_3

Catatan. Membuka file dalam mode tulis (

py_dict["movies"] = [{"title":"The Imitation Game","year":"2014",
"lang":"en","watched":True}]
8) akan menimpa konten jika file tersebut ada. Jika file tidak ada, file dibuat

Setelah menjalankan sel kode di atas, Anda akan melihat bahwa file JSON baru telah dibuat di direktori kerja saat ini. Dan Anda dapat melanjutkan dan memeriksa konten file JSON

create-json-file-pythonBuat file JSON dengan Python

Saat menulis ke file, tujuan utamanya adalah penyimpanan data. Dan jika Anda ingin mempertahankan pemformatan, Anda juga dapat menggunakan parameter

py_dict = json.loads(json_str)

type(py_dict)

# Output: dict

print(py_dict)

# Output
{'books': [{'title': 'The Wind in the Willows', 
'author': 'Kenneth Grahame', 'year': '1908'}, 
{'title': 'To the Lighthouse', 'author': 'Virginia Woolf', 'year': '1927'}]}
9 dan
 = json.dumps()
1

Bagaimana cara mengurai data JSON?

Contoh - Mengurai JSON . parse() untuk mengonversi teks menjadi objek JavaScript Use the JavaScript function JSON.parse() to convert text into a JavaScript object . const obj = JSON. parse('{"nama". "Yohanes", "umur". 30, "kota". "New York"}'); .

Parser JSON mana yang terbaik di Python?

orjson adalah pustaka JSON yang cepat dan tepat untuk Python. Ini adalah pustaka python tercepat untuk enkode & decoding json. Ini membuat serial dataclass, datetime, numpy, dan instance UUID secara asli.