Jika Anda tertarik dengan pemrograman Golang, Anda pasti sudah familiar dengan konsep JSON (JavaScript Object Notation) yang digunakan untuk pertukaran data antar sistem.
Dalam Golang, proses encoding dan decoding JSON menjadi penting agar data dapat dikomunikasikan secara efisien. Di sinilah fungsi Marshal dan Unmarshal berperan.
JSON Marshal digunakan untuk mengonversi data Golang menjadi format JSON, sementara Unmarshal mengubah format JSON kembali ke tipe data Golang. Memahami kedua fungsi ini sangat penting untuk mempermudah proses encoding dan decoding data dalam aplikasi Golang.
Baca Juga: JSON Adalah: Penjelasan, Fungsi, dan Cara Menggunakannya
Apa itu JSON Marshal dan Unmarshal pada Golang?
Berikut ini adalah penjelasan tentang kedua fungsi tersebut yang sangat penting untuk pengolahan data dalam aplikasi Anda.
Penjelasan JSON Marshal
Fungsi json.Marshal digunakan untuk mengonversi tipe data Golang menjadi format JSON. Proses ini sangat penting dalam banyak aplikasi yang membutuhkan komunikasi data antar sistem menggunakan JSON.
Berikut adalah beberapa tipe data Golang yang dapat diproses dengan fungsi Marshal:
- Struct: Mengonversi struktur data ke dalam format JSON.
- Map: Menyusun pasangan kunci dan nilai dalam JSON.
- Slice: Mengonversi array dinamis ke dalam format JSON.
Penjelasan JSON Unmarshal
Setelah mengetahui cara untuk mengonversi data Golang menjadi JSON, kini Anda juga perlu memahami cara mengonversi data JSON kembali ke tipe data Golang. Di sinilah fungsi json.Unmarshal berperan.
Fungsi ini digunakan untuk mendekode string JSON menjadi struktur data yang dapat digunakan dalam aplikasi Golang. Berikut adalah cara kerja JSON Unmarshal:
- Anda mengirimkan byte slice ([]byte) yang berisi data JSON.
- Fungsi ini kemudian mengonversi data tersebut ke dalam struktur data Golang yang sesuai, seperti struct atau map.
Cara Menggunakan JSON Marshal dan UnMarshal di Golang
Berikut adalah cara menggunakan kedua fungsi ini di Golang.
JSON Marshal
Fungsi json.Marshal digunakan untuk mengonversi data di Golang menjadi format JSON. Fungsi ini akan menerima data dalam bentuk tipe interface{} dan menghasilkan dua nilai: byte slice ([]byte) berisi representasi JSON dan error jika ada kesalahan dalam proses konversi.
Beberapa tipe data yang bisa diubah menjadi JSON dengan json.Marshal meliputi:
- Tipe data dasar seperti string, integer, boolean, dan float.
- Array dan slice yang akan diubah menjadi array JSON.
- Map yang akan diubah menjadi objek JSON, dengan kunci map menjadi kunci objek dan nilai map menjadi nilai objek.
- Struct di mana field struct akan diubah menjadi kunci objek JSON, dan nilai field struct menjadi nilai objek JSON.
Berikut adalah contoh kode yang menunjukkan bagaimana menggunakan json.Marshal untuk mengonversi data Golang ke dalam format JSON.
package main import ( “encoding/json” “fmt” “log” ) type person struct { First string } func main() { p1 := person{ First: “Wati”, } p2 := person{ First: “Budi”, } // marshal xp := []person{p1, p2} bs, err := json.Marshal(xp) if err != nil { log.Panic(err) } fmt.Println(“JSON: “, string(bs)) }
Contoh Penggunaan Unmarshal
Sebaliknya, fungsi json.Unmarshal digunakan untuk mengonversi string JSON kembali menjadi struktur data di Golang. Fungsi ini menerima dua argumen: byte slice ([]byte) yang berisi data JSON dan pointer ke interface{} yang akan menampung hasil decoding.
Berikut adalah contoh kode yang menggunakan json.Unmarshal untuk mengonversi string JSON menjadi tipe data Golang, seperti struct atau slice.
package main import ( “encoding/json” “fmt” “log” ) type person struct { First string } func main() { p1 := person{ First: “Wati”, } p2 := person{ First: “Budi”, } // marshal xp := []person{p1, p2} bs, err := json.Marshal(xp) if err != nil { log.Panic(err) } fmt.Println(“JSON: “, string(bs)) // unmarshal xp2 := []person{} err = json.Unmarshal(bs, &xp2) if err != nil { log.Panic(err) } fmt.Println(“Go Data Structure”, xp2) }
Perbedaan Antara JSON Marshal dan Unmarshal
Dalam pemrograman Golang, proses encoding dan decoding data JSON sangat penting untuk komunikasi antar sistem. Dua fungsi utama yang digunakan untuk memanipulasi data JSON dalam Go adalah Marshal dan Unmarshal. Berikut adalah perbedaan mendasar antara keduanya yang perlu Anda ketahui:
JSON Marshal
Marshal mengacu pada proses mengubah data struktur Go menjadi format JSON yang dapat dikirim atau disimpan. Fungsi json.Marshal menerima berbagai tipe data Go, seperti struct, array, atau map, dan mengubahnya menjadi byte slice ([]byte) yang berisi string JSON. Proses ini juga dikenal dengan istilah serializing.
Berikut adalah beberapa tipe data yang dapat diubah menjadi JSON menggunakan json.Marshal:
- Tipe data dasar: string, integer, boolean, dan float.
- Array dan slice: menjadi array dalam format JSON.
- Map: diubah menjadi objek JSON, dengan key map menjadi key objek dan nilai map menjadi nilai objek.
- Struct: field dalam struct menjadi key objek JSON, dan nilai field menjadi nilai objek.
Output dari proses marshal berupa byte slice ([]byte), yang perlu diubah menjadi string jika ingin ditampilkan.
JSON Unmarshal
Sebaliknya, Unmarshal adalah proses mengonversi string JSON kembali menjadi struktur data Go yang dapat diproses lebih lanjut. Fungsi json.Unmarshal digunakan untuk ini, menerima dua argumen utama:
- Byte slice ([]byte) yang berisi data JSON.
- Pointer ke struktur data Go (seperti struct atau map) untuk menampung hasil decoding.
Proses ini dikenal juga dengan istilah deserializing. Setelah unmarshal, data JSON yang sebelumnya berbentuk string akan diubah menjadi objek yang bisa dipakai dalam program Go.
Berikut adalah beberapa tipe data yang dapat digunakan untuk menampung hasil unmarshal:
- Struct: objek Go yang merepresentasikan struktur data.
- Map: digunakan untuk menyimpan data dalam format pasangan key-value.
- Interface: tipe data umum yang dapat menampung berbagai tipe data.
Sebagai tambahan, string JSON harus dikonversi menjadi byte slice terlebih dahulu sebelum digunakan dalam pemanggilan fungsi json.Unmarshal.
Penggunaan JSON Marshal dan Unmarshal dalam Aplikasi Nyata
Fungsi JSON Marshal dan Unmarshal memainkan peran penting dalam berbagai aplikasi Golang, terutama saat berinteraksi dengan data dalam format JSON. Berikut adalah beberapa contoh aplikasi nyata di mana kedua fungsi ini digunakan untuk mempermudah komunikasi antar sistem dan pengolahan data.
Komunikasi API Menggunakan JSON
Dalam pengembangan aplikasi yang melibatkan komunikasi antar sistem, seperti menggunakan API, Anda sering perlu mengonversi data menjadi format JSON dan sebaliknya. Berikut adalah penerapan fungsi Marshal dan Unmarshal dalam konteks API.
- Marshal: Mengubah data dari struktur Go menjadi format JSON untuk dikirim melalui API. Fungsi json.Marshal sangat berguna untuk mengirim respons dalam format JSON ke klien.
- Unmarshal: Mengonversi data JSON yang diterima dari API menjadi struktur Go. Fungsi json.Unmarshal memungkinkan aplikasi untuk memproses data yang dikirim oleh pengguna dalam format JSON.
 
Pengolahan Data dari File JSON
Selain komunikasi API, Anda juga dapat menggunakan JSON Marshal dan Unmarshal untuk pengolahan data yang tersimpan dalam file JSON. Kedua fungsi ini sangat membantu saat Anda perlu membaca atau menyimpan data dalam format JSON.
- Unmarshal: Mengubah data JSON yang dibaca dari file menjadi struktur data di Go. Fungsi json.Unmarshal memungkinkan Anda untuk mendekode data yang tersimpan dalam file dan memprosesnya.
- Marshal: Mengubah data dari Go menjadi format JSON dan menyimpannya ke dalam file. Fungsi json.MarshalIndent digunakan untuk menghasilkan format JSON yang terstruktur dengan rapi.
 
Kesalahan Umum dalam Menggunakan JSON Marshal dan Unmarshal
Berikut adalah beberapa kesalahan umum yang perlu Anda hindari saat menggunakan kedua fungsi tersebut.
Kesalahan dalam JSON Unmarshal
Berikut adalah beberapa kesalahan yang sering terjadi saat menggunakan json.Unmarshal:
- Field tambahan diabaikan: Jika input JSON mengandung field yang tidak ada di dalam struct target, field tersebut akan diabaikan selama proses unmarshal.
- Field yang hilang diisi dengan nilai nol: Jika ada field dalam struct yang tidak ada dalam input JSON, maka field tersebut akan diisi dengan nilai nol sesuai tipe datanya (misalnya, 0 untuk tipe data numerik atau “” untuk string).
- Unmarshal tidak sensitif terhadap huruf besar/kecil: Fungsi Unmarshal() akan mencocokkan nama field di input JSON dengan field dalam struct tanpa memperhatikan perbedaan huruf besar atau kecil, selama karakter dan urutannya sama.
- Nama field harus sama persis dengan kunci JSON: Untuk proses unmarshal berhasil, nama field di struct harus sama persis dengan nama kunci di dalam JSON. Jika terdapat perbedaan, nilai dari kunci tersebut tidak akan masuk ke dalam field yang dimaksud.
 
Kesalahan dalam JSON Marshal
Ada beberapa masalah yang dapat muncul saat menggunakan json.Marshal dalam Golang, antara lain:
- Output JSON default tidak terformat: Secara default, output dari json.Marshal() berupa satu baris yang tidak terformat dengan rapi. Ini mungkin cocok untuk transmisi data, tetapi tidak ideal untuk keperluan pembacaan manusia.
- Penggunaan tag json:”-” akan mengabaikan field: Jika Anda menandai field dengan tag json:”-“, maka field tersebut akan diabaikan dan tidak akan muncul dalam output JSON.
 
JSON Marshal dan Unmarshal di Golang untuk pengolahan data dalam format JSON
Penggunaan fungsi JSON Marshal dan Unmarshal di Golang sangat penting dalam pengolahan data dalam format JSON, terutama untuk komunikasi antar sistem dan pengembangan aplikasi berbasis data.
Jika ingin menguasai lebih dalam tentang Golang dan membangun aplikasi dengan kemampuan seperti ini, bergabunglah dengan Kursus Golang kami. Dengan pengalaman lebih dari 5 tahun dan pengajaran berbasis praktik, Anda akan siap menghadapi tantangan pengembangan aplikasi di dunia nyata.
- Diajarkan langsung oleh coach praktisi berpengalaman lebih dari 5 tahun
- GRATIS re-coaching, belajar sampai bisa, seumur hidup
- Metode pembelajaran berbasis pengalaman (Experience Based Learning)
- Pilihan cicilan hingga 18x
- 4 penghargaan internasional
- Lebih dari 100.000 alumni
- 472+ perusahaan yang menjadi klien
- Rating bintang 4.9 dari 15.000+ ulasan di Google Review
 
								 
								 
															 
															