Mengolah format data JSON dengan Python

Pada tutorial kali ini, kita akan mencoba mempelajari tentang apa itu JSON.

JSON Adalah singkat dari JavaScript Object Notation.

JSON adalah sebuah format data yang digunakan untuk menyimpan sebuah informasi (data).
Saat kita mengakses sebuah public API, maka di sana terdapat banyak informasis / data dalam format JSON. JSON juga bisa digunakan untuk melakukan sebuah konfigurasi yang dapat kita jalankan pada local machine kita.

Seperti saat tulisan ini dibuat menggunakan Visual Studio Code, kita dapat mengakses setting dari text editor tersebut menggunakan shortcut CTRL & P, lalu carilah file bernama settings.json, maka kita akan mendapatkan setting pada vscode kita dalam bentuk json file seperti di bawah ini:

{
    "python.pythonPath": "env/bin/python",
    "python.linting.pylintEnabled": true,
    "python.linting.enabled": true
}

Meskipun kepanjangan dari JSON adalah JavaScript Object Notation, akan tetapi, json tidak ada hubungannya dengan javascript, karena nama tersebut hanyalah sebuah inspirasi dari javascript, skip this for now .

Membaca JSON file menggunakan Python

Pada contoh di bawah ini, kita akan mencoba menggunakan cara yang simple.

# import builtin library json pada python
import json


json_data_string = '''
{
    "glossary": {
        "title": "example glossary",
		"GlossDiv": {
            "title": "S",
			"GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
					"SortAs": "SGML",
					"GlossTerm": "Standard Generalized Markup Language",
					"Acronym": "SGML",
					"Abbrev": "ISO 8879:1986",
					"GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
						"GlossSeeAlso": ["GML", "XML"]
                    },
					"GlossSee": "markup"
                }
            }
        }
    }
}
'''

# membaca format json ke dalam python object dengan method 'loads' 
read_json = json.loads(json_data_string)

# print read_json di atas ke dalam format python dict 
print(read_json)

# untuk mengetahui type data dari hasil print tersebut
print(type(read_json))
Contoh diambil dari situs resmi situs resmi

Jika kita running script di atas, maka akan muncul sebuah output python dictionary.

(env) $ python learn_json.py

{'glossary': {'title': 'example glossary', 'GlossDiv': {'title': 'S', 'GlossList': {'GlossEntry': {'ID': 'SGML', 'SortAs': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Acronym': 'SGML', 'Abbrev': 'ISO 8879:1986', 'GlossDef': {'para': 'A meta-markup language, used to create markup languages such as DocBook.', 'GlossSeeAlso': ['GML', 'XML']}, 'GlossSee': 'markup'}}}}}

<class 'dict'>
  • Note : Pada contoh di atas, kita membaca sebuah format data json yang dijadikan string karena kita menggunakan methode inline method (di dalam .py file).
    Jika kita perhatikan sekilas, maka format data tersebut sangatlah mirip dengan python dictionary.

Sewaktu kita melakukan load pada format data json di atas, kita melakukan konversi table dari json ke python object see the docs.

class json.JSONDecoder(*, object_hook=None, parse_float=None parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)
    Simple JSON decoder.

    Performs the following translations in decoding by default:
JSONPython
objectdict
arraylist
stringstr
number (int)int
number (real)float
trueTrue
falseFalse
nullNone

Kita juga dapat melakukan pengecekan type data python pada format json di atas melalui key yang ada.

Contoh:

json_data = '''
{
    "profiles": [
        {
            "name": "Aby",
            "phone_number": 8768799866556,
            "email": ["hi-there@mail.com", "hello@notnoob.com"],
            "region": "West Jakarta",
            "is_robot": false
        },
        {
            "name": "John",
            "phone_number": ["898-8777-896-657", 8988776646657],
            "email": ["hi@mail.com", "help@me.com"],
            "region": "West Virginia",
            "is_robot": true
        }
    ]
}
''' 

# convert json data kedalam python
read_json = json.loads(json_data)

# mengecek tipe data pada key json_data 
print(type(read_json))

# mengecek tipe data pada profiles 'key'
print(type(read_json["profiles"]))

Jika dijalankan, maka akan menghasilkan sebuah output seperti berikut:

(env) $ python learn_json.py

# tipe data pada key 'json_data' (dictionary) 
<class 'dict'>

# tipe data pada key "profiles" (list)
<class 'list'>

Menggunakan loop untuk mengakses JSON key secara individu.

Pada contoh di atas, mungkin bagi kita akan sedikit susah untuk membaca value dari key profiles di atas karena masih terlihat berantakan.

Oleh karena itu, kita dapat menggunakan loop untuk mendapatkan value tersebut secara individu.

Contoh:

# menggunakan key "profiles" untuk mendapatkan data secara terpisah
for person in read_json["profiles"]:
    print(person)

Jika kita jalankan kembali script di atas, maka kita akan mendapatkan output seperti berikut:

(env) $ python learn_json.py

# hasil output lebih mudah untuk dibaca karena memisankan object satu dengan lainnya
{'name': 'Aby', 'phone_number': 8768799866556, 'email': ['hi-there@mail.com', 'hello@notnoob.com'], 'region': 'West Jakarta', 'is_robot': False}
{'name': 'John', 'phone_number': ['898-8777-896-657', 8988776646657], 'email': ['hi@mail.com', 'help@me.com'], 'region': 'West Virginia', 'is_robot': True}

Jika kita perhatikan kembali, output tersebut sedikit lebih mudah untuk dibaca karena penulisannya yang terpisah antara object satu dengan yang lainnya.

Kita juga dapat menggunakan loop untuk mendapatkan detail value dari key yang diinginkan.

contoh:

# mendapatkan detail value dari sebuah object pada JSON
for person in read_json["profiles"]:
    print(person['name'])

Jalankan kembali script tersebut, maka kita akan mendapatkan output seperti di bawah ini:

(env) $ python learn_json.py

Aby
John

Pada contoh tersebut, kita mencoba untuk mendapatkan sebuah nama dari object profile dengan menggunakan value name.
Maka output yang dihasilkan pun berupa detail name dari object tersebut, (profiles).

So,… what’s next? selanjutkan kita akan mencoba mengolah menggunakan json file (.json) dan menyimpan file tersebut ke dalam bentuk excel atau csv.

So stay tuned and keep practice!.


Tags: #python, #Python #JSON, #Blog, #Tutorial-Python-Untuk-Pemula, #Parsing JSON