pemrograman

03 Mengenal JSON Objek

Pengenalan JSON Object

Pada artikel sebelumnya kita sudah mempelajari encode data seperti string, number, boolean dan tipe primitif lainnya. Tetapi ada satu case pada unit test yang dibuat berupa struct objek. Nah pada kali ini kita akan lebih dalam lagi mempelajari objek dari JSOn tersebut. Data JSON bentuknya objek dan Array sedangkan valuenya bisa berupa objek lagi atau langsung data dengan tipe primitif lainnya.

Contoh JSON Objek seperti dibawah ini.

{
	"first_name":"Santekno",
	"middle_name": "Ihsan",
	"last_name":"Arif"
}

JSON Objek pada Golang itu bisa direpresentasikan dalam bentuk tipe data Struct yang mana nantinya tiap atribut pada JSON Objek itu merupakan atribut dari struct itu sendiri.

Kita coba representasikan JSON Objek diatas menjadi struktur struct seperti ini

type Customer struct {
	FirstName string `json:"first_name"`
	MiddleName string `json:"middle_name"`
	LastName string `json:"last_name"`
}

Pada struct diatas kita lihat ada penambahan json:"first_name" dan yang lain juga ini dibutuhkan untuk mengganti nama key dari objek JSON tersebut. Misalkan pada JSON Objek kita buat key first_name tetapi ingin kita representasikan di struct Customer dengan field FirstName. Maka ini seperti mapping key JSON objek terhadap field yang ada pada struct FirstName.

Cara Implementasi JSON objek

Contohnya kita akan coba membuat JSON objek yang kita ambil dari suatu struct yang kita buat. Kita coba buat suatu.

type Customer struct {
	FirstName  string `json:"first_name"`
	MiddleName string `json:"middle_name"`
	LastName   string `json:"last_name"`
}

func GenerateobjekJSON(data Customer) string {
	bytes, err := json.Marshal(data)
	if err != nil {
		panic(err)
	}

	return string(bytes)
}

Maka bisa kita lihat untuk membuat objek JSON sama halnya seperti fungsi yang pernah kita buat sebelumnya tetapi kita buat suatu parameter dengan tipe data struct Customer.

Kita akan coba melakukan uji fungsi yang telah kita buat dengan menggunakan unit test.

func TestGenerateObjectJSON(t *testing.T) {
	type args struct {
		data Customer
	}
	tests := []struct {
		name string
		args args
		want string
	}{
		{
			name: "success generate object JSON",
			args: args{
				data: Customer{
					FirstName:  "Santekno",
					MiddleName: "Ihsan",
					LastName:   "Arif",
				},
			},
			want: string(`{"first_name":"Santekno","middle_name":"Ihsan","last_name":"Arif"}`),
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if got := GenerateObjectJSON(tt.args.data); got != tt.want {
				t.Errorf("GenerateObjectJSON() = %v, want %v", got, tt.want)
			}
		})
	}
}

Bisa kita lihat hasil dari json.Marshal tersebut akan membuat JSON Objek memiliki key yang sudah dibuat pada tags json yang ada pada struct tersebut.

comments powered by Disqus