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 .
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))
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'>
json
yang dijadikan string
karena kita menggunakan methode inline method (di dalam .py
file).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:
JSON | PYTHON |
---|---|
object | dict |
array | list |
string | str |
number (int) | int |
number (real) | float |
true | True |
false | False |
null | None |
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'>
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 practicing!.