Skip to content
Santekno.com | Level Up Your Engineering Skills
ID
📖 0%
12 Oct 2023 · 3 mnt baca ·Artikel 53 / 119
Go

03 Mengenal JSON Objek

IH
Ihsan Arif
Penulis di Santekno · Backend Engineer

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.

json
1{
2	"first_name":"Santekno",
3	"middle_name": "Ihsan",
4	"last_name":"Arif"
5}

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

go
1type Customer struct {
2	FirstName string `json:"first_name"`
3	MiddleName string `json:"middle_name"`
4	LastName string `json:"last_name"`
5}

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.

go
 1type Customer struct {
 2	FirstName  string `json:"first_name"`
 3	MiddleName string `json:"middle_name"`
 4	LastName   string `json:"last_name"`
 5}
 6
 7func GenerateobjekJSON(data Customer) string {
 8	bytes, err := json.Marshal(data)
 9	if err != nil {
10		panic(err)
11	}
12
13	return string(bytes)
14}

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.

go
 1func TestGenerateObjectJSON(t *testing.T) {
 2	type args struct {
 3		data Customer
 4	}
 5	tests := []struct {
 6		name string
 7		args args
 8		want string
 9	}{
10		{
11			name: "success generate object JSON",
12			args: args{
13				data: Customer{
14					FirstName:  "Santekno",
15					MiddleName: "Ihsan",
16					LastName:   "Arif",
17				},
18			},
19			want: string(`{"first_name":"Santekno","middle_name":"Ihsan","last_name":"Arif"}`),
20		},
21	}
22	for _, tt := range tests {
23		t.Run(tt.name, func(t *testing.T) {
24			if got := GenerateObjectJSON(tt.args.data); got != tt.want {
25				t.Errorf("GenerateObjectJSON() = %v, want %v", got, tt.want)
26			}
27		})
28	}
29}

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.

Artikel Terkait

💬 Komentar