Tips Ignore Omitempty di Bahasa Golang

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Tips Ignore Omitempty di Bahasa Golang

Apa itu Omitempty ?


Omitempty merupakan sebuah opsi yang menentukan sebuah object-key akan di hilangkan jika sebuah object-key memiliki nilai kosong.

Saat kita bekerja dalam environment project yang komplek, kita akan menemukan sebuah struct yang konstruktornya dipakai oleh banyak method.

Perhatikan contoh kode berikut ini:

package main

import (
"encoding/json"
"fmt"
)

type employee struct {
Name string `json:"name,omitempty"`
Address string `json:"address"`
}

func main() {
dataEmployee := employee{
Name: "",
Address: "jalan raya kenari",
}

byte, err := json.Marshal(dataEmployee)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(string(byte))
}

Result:

{"Address": "jalan raya kenari"}

Perhatikan struct employee, terdapat sebuah object json name dengan omitempty. Dari contoh diatas object-key Name tidak memiliki value, sehingga saat code dijalankan golang secara otomatis akan menghilangkan object-key Name dari tampilan layar.

Bagaimana Meng-Ignore Omitempty Object-key Name ?


Jika terdapat sebuah kondisi dimana kita ingin menampilkan object-key Name kelayar, namun kita tetap ingin mempertahankan omitempty sebagai defautl dari object-key Name.

Solusinya kita bisa menambahkan pointer pada tipe data dari object-key Name, menjadi seperti berikut:


Name *string `json:"name,omitempty"`


Kemudian buat sebuah variable dengan empty string

dnama := ""
dataEmployee := employee{
Name: &dnama,
Address: "jalan raya kenari",
}

Perhatikan kode program dibawah ini:

package main

import (
"encoding/json"
"fmt"
)

type employee struct {
Name *string `json:"name,omitempty"`
Address string `json:"address"`
}

func main() {
dnama := ""
dataEmployee := employee{
Name: &dnama,
Address: "jalan raya kenari",
}

byte, err := json.Marshal(dataEmployee)
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(string(byte))
}

Result:

{"name":"","address":"jalan raya kenari"}

Baca Artikel lainya:



  1. Hello world, membangun microservice dengan FastAPI

  2. FastAPI APIRouter, Membangun microservice dngan FastAPI

  3. Mini Wallet Bagian 1 - Django Template dan Static File

  4. Mini Wallet Bagian 2 - Django Template Base HTML

  5. Mini Wallet Bagian 3 - Dajngo Model dan Koneksi Database MySQL

  6. Tutorial bassic Mysql bagian 1 - Create Read Update Delete

  7. Tutorial bassic Mysql bagian 2 - Inner, Left, Right, Cross Join

  8. Tutorial bassic Mysql bagian 3 - Filtering Data

  9. Tutorial bassic Mysql bagian 4 - Grouping Data 

  10. Tutorial bassic Mysql bagian 5 - Operator dan Clausa

  11. Tutorial bassic Mysql bagian 6 - Replace Statement

  12. Tutorial bassic Mysql bagian 7 - Constraint Data

  13. Tutorial bassic Mysql bagian 8 - Mengubah Struktur tabel

  14. Tutorial bassic Mysql bagian 9 - Subquery

  15. Tutorial bassic Mysql bagian 10 - Virtual Tabel

  16. Tutorial bassic Mysql bagian 11 - Control Flow Function

  17. Membuat service OTP bagian 1 - OTP dan PIN

  18. Membuat service OTP bagian 2 - Sequence Diagram

  19. Membuat service OTP bagian 3 - Model dan Serializer

  20. Membuat  service OTP bagian 4 - Validate OTP

  21. Membuat  service OTP bagian 5 - Api Client Service

  22. Membuat service user login bagian 1 - Konfigurasi Database

  23. Membuat service user login bagian 2 - Serializer dan JWT

  24. Membuat CRUD service product bagian 1 - Models Product

  25. Membuat CRUD service product bagian 2 - Function Serializer

  26. Membuat CRUD service product bagian 3 - Api Client Service

  27. Membaut CRUD service product bagian 4 - Auth User

  28. Membuat CRUD service product bagian 5 - TDR File Log

  29. Membuat CRUD service product bagian 6 - Unit Test

  30. Membuat service user register bagian 1 - Django

  31. Membuat Service user register bagian 2 - Django

  32. Membuat service filter dan download file CSV di django

  33. Django upload file menggunakan FileSystemStorage