Lalu kita juga akan membuat struct bernama User yang memiliki 2 properti
typeUserstruct{FullNamestring`json:"Name"`Ageint}
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.
Jika dilihat, ada yang berbeda pada struct yang telah kita buat. Pada struct User, salah satu property-nya yaitu FullName memiliki tagjson:"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.
Menampilkan data struct hasil decode dari JSON
Decode JSON ke Map dan Interface
Kita juga bisa melakukan decode dari JSON ke dalam map[string]interface{} dan interface{} .
Menampilkan data map[string]interface{} hasil decode dari JSON
Untuk melakukan decode dari ke data interface{} , kita harus melakukan casting ke dalam map[string]interface{} seperti berikut ini:
Menampilkan data map[string]interface{} hasil decode dari JSON
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.