Memahami Penggunaan JSON Marshal di Bahasa Golang

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Memahami Penggunaan JSON Marshal di Bahasa Golang

Pustaka standar Go menawarkan paket yang memiliki semua yang Anda perlukan untuk melakukan encoding dan decoding JSON.

Paket encode/json . Ini memungkinkan Anda untuk melakukan encoding data JSON seperti yang didefinisikan dalam RFC 7159.

Saat bekerja dengan data, kita biasanya ingin meng-encode beberapa struct Go menjadi string json.

Namun paket encode/json perpustakaan standar Go memungkinkan kita untuk meng-encode tipe data apa pun ke dalam string JSON.

Mari kita lihat beberapa contoh dan bagaimana encoding json bekerja pada beberapa tipe data Go dan bagaimana Anda dapat menyusun json struct.

Berikut ini definisi json Marshal dalam paket enkode json :

func Marshal(v interface{}) ([]byte, error)

Berikut ini beberapa contoh penggunaan JSON MARSHAL

A) JSON Marshal Int


a, _ := json.Marshal(23413)
fmt.Println(string(a))

Output: 23413

B) JSON Marshal Bool


a, _ := json.Marshal(true)
fmt.Println(string(a))

Output: true

C) JSON Marshal Slice


a, _ := json.Marshal([]string{"foo", "bar", "baz"})
fmt.Println(string(a))

Output: ["foo","bar","baz"]

D) JSON Marshal Map


a, _ := json.Marshal(map[string]int{"foo": 1, "bar": 2, "baz": 3})
fmt.Println(string(a))

Output: {"bar":2,"baz":3,"foo":1}

E) JSON Marshal Struct


package main

import (
"fmt"
"encoding/json"
)

type User struct {
Name string
Age int
Active bool
lastLoginAt string
}

func main() {
u, err := json.Marshal(User{Name: "Dina", Age: 20, Active: true, lastLoginAt: "today"})
if err != nil {
panic(err)
}
fmt.Println(string(u))
}


Output: {"Name":"Dina","Age":20,"Active":true}

Ini adalah contoh yang lebih lengkap dan memungkinkan Anda untuk melihat bagaimana sebuah struct disusun dengan JSON di Go.

Perhatikan bahwa bidang yang dimulai dengan huruf kecil lastLoginAt tidak diekspor dan tidak akan ditampilkan di hasil akhir marshal JSON.

F) JSON Marshal Struct dengan JSON Tags


package main

import (
"fmt"
"encoding/json"
)

type User struct {
Name string `json:"full_name"`
Age int `json:"age,omitempty"`
Active bool `json:"-"`
lastLoginAt string
}

func main() {
u, err := json.Marshal(User{Name: "Dina", Age: 0, Active: true, lastLoginAt: "today"})
if err != nil {
panic(err)
}
fmt.Println(string(u))
}


Output: {"full_name":"Dina"}

Contoh ini memungkinkan kita untuk melihat beberapa fitur JSON


  • Anda dapat menentukan tag JSON json:"full_name"dan menentukan nama khusus untuk bidang JSON Anda

  • Saat menentukan json:"<field name>,omitempty"sebagai tag json, bidang akan dibuang di keluaran JSON jika nilainya nol.

  • Saat menentukan json:"-"sebagai tag json, kolom akan dihapus seluruhnya dari output JSON. Ini digunakan ketika Anda ingin menyimpan bidang di struct Go Anda tetapi tidak di tampilkan di output JSON Anda


G) Video Tutorial



Baca artikel lainya:


  1. Mengolah data EXCEL dengan pandas dan jupyter notebook

  2. Mengolah data CSV dengan pandas dan jupyter notebook

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

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

  5. Tutorial bassic Mysql bagian 3 - Filtering Data

  6. Tutorial bassic Mysql bagian 4 - Grouping Data 

  7. Tutorial bassic Mysql bagian 5 - Operator dan Clausa

  8. Tutorial bassic Mysql bagian 6 - Replace Statement

  9. Tutorial bassic Mysql bagian 7 - Constraint Data

  10. Tutorial bassic Mysql bagian 8 - Mengubah Struktur tabel

  11. Tutorial bassic Mysql bagian 9 - Subquery

  12. Tutorial bassic Mysql bagian 10 - Virtual Tabel

  13. Tutorial bassic Mysql bagian 11 - Control Flow Function

  14. Membuat service OTP bagian 1 - OTP dan PIN

  15. Membuat service OTP bagian 2 - Sequence Diagram

  16. Membuat service OTP bagian 3 - Model dan Serializer

  17. Membuat  service OTP bagian 4 - Validate OTP

  18. Membuat  service OTP bagian 5 - Api Client Service

  19. Membuat service user login bagian 1 - Konfigurasi Database

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

  21. Membuat CRUD service product bagian 1 - Models Product

  22. Membuat CRUD service product bagian 2 - Function Serializer

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

  24. Membaut CRUD service product bagian 4 - Auth User

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

  26. Membuat CRUD service product bagian 6 - Unit Test

  27. Membuat service user register bagian 1 - Django

  28. Membuat Service user register bagian 2 - Django

  29. Membuat service filter dan download file CSV di django

  30. Django upload file menggunakan FileSystemStorage