JSON Data
JSON atau Javascript Object Notation adalah notasi standar yang umum digunakan untuk komunikasi data di dalam web.
Go menyediakan package encoding/json
yang berisikan banyak fungsi untuk kebutuhan operasi dan manipulasi json.
Decode JSON ke Struct
Kita akan melakukan decode dari data JSON ke dalam Struct.
Terdapat data JSON dengan nilai berikut:
Lalu kita juga akan membuat struct
bernama User
yang memiliki 2 properti
Untuk melakukan decode, kita akan menggunakan fungsi dari package json
yaitu json.Unmarshal
yang membutuhkan 2 parameter. Parameter pertama adalah data JSON yang harus bertipe []byte
. Oleh karena itu nantinya kita harus melakukan casting dari data JSON berbentuk string
ke dalam []byte
. Parameter kedua adalah pointer
dari struct
yang akan menampung hasilnya.
Kode lengkapnya dapat dilihat di bawah ini:
Jika dilihat, ada yang berbeda pada struct
yang telah kita buat. Pada struct User
, salah satu property-nya yaitu FullName
memiliki tag json:"Name"
. Tag tersebut digunakan untuk mapping informasi json ke property yang bersangkutan.
Data json yang akan diparsing memiliki 2 property yaitu Name
dan Age
. Kebetulan penulisan Age
pada data json dan pada struktur struct adalah sama, berbeda dengan Name
yang tidak ada pada struct.
Dengan menambahkan tag json, maka property FullName
struct akan secara otomatis menampung data json property Name
.
Decode JSON ke Map dan Interface
Kita juga bisa melakukan decode dari JSON ke dalam map[string]interface{}
dan interface{}
.
Untuk melakukan decode dari ke data interface{}
, kita harus melakukan casting ke dalam map[string]interface{}
seperti berikut ini:
Encode Slice Struct ke dalam JSON
Sebelumnya kita sudah melakukan decode data dari JSON, sekarang kita akan membahas cara encode data slice struct ke bentuk JSON.
Fungsi json.Marshal
digunakan untuk encoding data ke JSON. Sumber data bisa berupa variabel dengan tipe data struct, map[string]interface{}
, atau slice.
Pada contoh berikut, data slice struct dikonversi ke dalam bentuk JSON. Hasil konversi berupa []byte
, maka akan kita casting terlebih dahulu ke tipe string
untuk bisa ditampilkan bentuk JSON string-nya.
Last updated