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" ,omitemptymelewati nilai nol-mengabaikan bidang;,stringmembungkus 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.