0Pricing
Go Academy · Pelajaran

Tag JSON

Kontrol proses marshaling

Tag JSON adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Tag JSON Mengendalikan Serialisasi

Paket encoding/json menggunakan tag json untuk menentukan nama kunci dan aturan saat mengonversi struktur ke dan dari JSON.

Nama Bidang Bawaan

Tanpa tag, kunci JSON sama persis dengan nama bidang yang diekspor, termasuk penggunaan huruf besar dan kecil.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string
	Age  int
}

func main() {
	b, _ := json.Marshal(User{"Ann", 30})
	fmt.Println(string(b))
}

Mengganti Nama Kunci

Tag json mengubah nama kunci dalam keluaran. Di sini, Name menjadi name dalam huruf kecil.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string "json:\"name\""
	Age  int    "json:\"age\""
}

func main() {
	b, _ := json.Marshal(User{"Ann", 30})
	fmt.Println(string(b))
}

Opsi omitempty

Tambahkan ,omitempty untuk melewati sebuah bidang dalam keluaran ketika bidang tersebut berisi nilai nol (string kosong, 0, nil, dan sebagainya).

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name  string "json:\"name\""
	Email string "json:\"email,omitempty\""
}

func main() {
	b, _ := json.Marshal(User{Name: "Ann"})
	fmt.Println(string(b))
}

Mengabaikan Bidang

Tag berupa - memberi tahu penyandi untuk melewati bidang sepenuhnya, berguna untuk rahasia seperti kata sandi.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name     string "json:\"name\""
	Password string "json:\"-\""
}

func main() {
	b, _ := json.Marshal(User{"Ann", "secret"})
	fmt.Println(string(b))
}

Melakukan Deserialisasi dengan Tag

Tag berfungsi untuk kedua arah. Saat mendekode JSON, tag memberi tahu dekoder kunci JSON mana yang mengisi bidang tertentu.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string "json:\"name\""
}

func main() {
	var u User
	json.Unmarshal([]byte("{\"name\":\"Bob\"}"), &u)
	fmt.Println(u.Name)
}

Pencocokan Tanpa Membedakan Huruf Besar-Kecil

Saat melakukan deserialisasi, Go mencocokkan kunci JSON dengan tag tanpa membedakan huruf besar-kecil sebagai cadangan. Namun, mendefinisikan tag secara eksplisit tetap merupakan pilihan yang aman dan jelas.

Opsi String

Opsi ,string menyandikan bidang numerik atau boolean sebagai string JSON. Opsi ini berguna untuk sistem yang mengharapkan angka ditulis dalam tanda kutip.

package main

import (
	"encoding/json"
	"fmt"
)

type Item struct {
	ID int "json:\"id,string\""
}

func main() {
	b, _ := json.Marshal(Item{ID: 42})
	fmt.Println(string(b))
}

Menggabungkan Opsi

Anda dapat menggabungkan nama dengan opsi: json:"email,omitempty". Nama ditulis terlebih dahulu, lalu opsi yang dipisahkan dengan koma.

Bidang yang Tidak Diekspor Dilewati

Hanya bidang yang diekspor (diawali huruf kapital) yang diserialisasikan. Bidang yang diawali huruf kecil tidak terlihat oleh encoding/json, apa pun tag yang dimilikinya.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string "json:\"name\""
	age  int
}

func main() {
	b, _ := json.Marshal(User{Name: "Ann", age: 30})
	fmt.Println(string(b))
}

Keluaran yang Rapi

json.MarshalIndent memformat JSON dengan indentasi, sehingga berguna untuk log yang mudah dibaca sekaligus tetap mematuhi tag.

package main

import (
	"encoding/json"
	"fmt"
)

type User struct {
	Name string "json:\"name\""
}

func main() {
	b, _ := json.MarshalIndent(User{"Ann"}, "", "  ")
	fmt.Println(string(b))
}

Pemeriksaan Singkat

Apa fungsi opsi ,omitempty pada tag json?

Ringkasan

Tag JSON mengatur proses serialisasi:

  • Ganti nama kunci dengan json:"name"
  • ,omitempty melewati nilai nol
  • - mengabaikan bidang; ,string membungkus angka dalam tanda kutip
  • Hanya bidang yang diekspor yang diserialisasikan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Tag JSON” gratis?

Ya — teks lengkap “Tag JSON” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Tag JSON”?

Kontrol proses marshaling Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Tag JSON” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Apa Itu Tag Struct
  2. Tag JSON
  3. Pustaka Validasi
  4. Penguraian Tag Kustom
← Kembali ke Go Academy