JSON, singkatan dari JavaScript Object Notation, adalah suatu format ringkas pertukaran data komputer. Formatnya berbasis teks dan terbaca-manusia serta digunakan untuk merepresentasikan struktur data sederhana dan larik asosiatif.

Tentunya sahabat halovina sudah sangat mengenal file ataupun format json, pada tutorial kali ini kita akan memparsing json string dengan struct pada bahasa golang. Berikut iini sample format json yang saya ambil dari listing properti property145.com.

[
		{
			"nama_properti":"Navapark BSD",
			"alamat":"jalan raya bsd serpong",
			"deskripsi":"Dijual rumah mewah dengan harga pas",
			"harga_jual": 1000000000
		},
		{
			"nama_properti":"GreenWich BSD",
			"alamat":"jalan raya bsd serpong",
			"deskripsi":"Dijual apartemen mewah dengan harga pas",
			"harga_jual": 700000000
		}
	]
Dari data json string diatas kita buat format type struct nya, perhatikan kode berikut ini :
type propertyListing struct {
	NamaProperti string `json:"nama_properti"`
	Alamat       string `json:"alamat"`
	Deskripsi    string `json:"deskripsi"`
	HargaJual    int    `json:"harga_jual"`
}
Selanjutnya buat sebuah file dengan nama sample-parsing.go

pada file sample-parsing.go buat sebuah function untuk membaca dan memparsing data json, perhatikan kode dibawah ini :

func CekData(nama_properti string) (propertyListing, error) {
 
	var dProp []propertyListing
	data := `[
		{
			"nama_properti":"Navapark BSD",
			"alamat":"jalan raya bsd serpong",
			"deskripsi":"Dijual rumah mewah dengan harga pas",
			"harga_jual": 1000000000
		},
		{
			"nama_properti":"GreenWich BSD",
			"alamat":"jalan raya bsd serpong",
			"deskripsi":"Dijual apartemen mewah dengan harga pas",
			"harga_jual": 700000000
		}
	]`
 
	textBytes := []byte(data)
	err := json.Unmarshal(textBytes, &dProp)
	if err != nil {
		return propertyListing{}, err
	}
 
	for i := 0; i < len(dProp); i++ {
		if dProp[i].NamaProperti == nama_properti {
			return dProp[i], nil
		}
	}
	return propertyListing{}, err
}

Kita telah membuah format struct dan function parsing data, selanjutnya kita buat function main yang akan di jalankan saat kode program di eksekusi, perhatikan kode dibawah ini :

func main() {
	d, err := CekData("Navapark BSD")
	if err != nil {
		fmt.Println("data error")
	}
	fmt.Println(d)
}

Kode Lengkap

package main
 
import (
	"encoding/json"
	"fmt"
)
 
type propertyListing struct {
	NamaProperti string `json:"nama_properti"`
	Alamat       string `json:"alamat"`
	Deskripsi    string `json:"deskripsi"`
	HargaJual    int    `json:"harga_jual"`
}
 
func main() {
	d, err := CekData("Navapark BSD")
	if err != nil {
		fmt.Println("data error")
	}
	fmt.Println(d)
}
 
func CekData(nama_properti string) (propertyListing, error) {
 
	var dProp []propertyListing
	data := `[
		{
			"nama_properti":"Navapark BSD",
			"alamat":"jalan raya bsd serpong",
			"deskripsi":"Dijual rumah mewah dengan harga pas",
			"harga_jual": 1000000000
		},
		{
			"nama_properti":"GreenWich BSD",
			"alamat":"jalan raya bsd serpong",
			"deskripsi":"Dijual apartemen mewah dengan harga pas",
			"harga_jual": 700000000
		}
	]`
 
	textBytes := []byte(data)
	err := json.Unmarshal(textBytes, &dProp)
	if err != nil {
		return propertyListing{}, err
	}
 
	for i := 0; i < len(dProp); i++ {
		if dProp[i].NamaProperti == nama_properti {
			return dProp[i], nil
		}
	}
	return propertyListing{}, err
}

Jalankan kode program dengan cara go run main.go

Selamat mencoba semoga bermanfaat

Youtube : Video Tutorial

 

Baca artikel lainya :