Tinjauan encoding/json
Marshal dan unmarshal JSON
Tinjauan encoding/json adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.
JSON di Go
JSON adalah format data yang paling umum untuk API. Paket standar Go, encoding/json, mengonversi nilai Go menjadi teks JSON dan sebaliknya.
Marshal: Go ke JSON
json.Marshal mengubah nilai Go menjadi sekumpulan byte JSON. Konversikan hasilnya menjadi string untuk mencetaknya.
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]int{"a": 1, "b": 2}
b, _ := json.Marshal(data)
fmt.Println(string(b))
}Serialisasi Struktur
Struktur diserialisasikan bidang demi bidang. Bidang yang diekspor menjadi kunci JSON.
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))
}Unmarshal: JSON ke Go
json.Unmarshal menguraikan byte JSON menjadi nilai Go. Berikan pointer agar fungsi tersebut dapat mengisi variabel Anda.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string
Age int
}
func main() {
var u User
json.Unmarshal([]byte("{\"Name\":\"Bob\",\"Age\":25}"), &u)
fmt.Println(u)
}Tag untuk Nama Kunci
Gunakan tag json untuk mengatur nama kunci, seperti yang dibahas sebelumnya. Di sini, Name dipetakan ke kunci JSON name.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.Marshal(User{"Ann"})
fmt.Println(string(b))
}Selalu Periksa Kesalahan
Marshal dan Unmarshal sama-sama mengembalikan kesalahan. Dalam kode nyata, jangan pernah mengabaikannya; JSON yang tidak valid atau jenis yang tidak didukung dapat menghasilkan kesalahan.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v int
err := json.Unmarshal([]byte("not json"), &v)
fmt.Println(err)
}Mendekode ke Peta
Saat bentuk data belum diketahui sebelumnya, lakukan Unmarshal ke map[string]interface{}.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var m map[string]interface{}
json.Unmarshal([]byte("{\"x\":1,\"y\":\"hi\"}"), &m)
fmt.Println(m["x"], m["y"])
}Slice dan Larik
Larik JSON dipetakan ke slice Go. Melakukan marshal pada sebuah slice menghasilkan larik JSON.
package main
import (
"encoding/json"
"fmt"
)
func main() {
b, _ := json.Marshal([]string{"a", "b", "c"})
fmt.Println(string(b))
}Mencetak dengan Format Rapi
json.MarshalIndent menambahkan indentasi agar keluaran mudah dibaca manusia.
package main
import (
"encoding/json"
"fmt"
)
func main() {
data := map[string]int{"a": 1}
b, _ := json.MarshalIndent(data, "", " ")
fmt.Println(string(b))
}Angka Menjadi float64
Saat mendekode ke interface{}, semua angka JSON menjadi float64 di Go. Konversikan secara eksplisit jika Anda memerlukan int.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v interface{}
json.Unmarshal([]byte("42"), &v)
fmt.Printf("%T %v\n", v, v)
}Siklus Bolak-Balik
Anda dapat melakukan marshal lalu unmarshal untuk menyalin data melalui JSON. Nilainya tetap utuh untuk jenis yang didukung.
package main
import (
"encoding/json"
"fmt"
)
func main() {
orig := []int{1, 2, 3}
b, _ := json.Marshal(orig)
var back []int
json.Unmarshal(b, &back)
fmt.Println(back)
}Pemeriksaan Singkat
Mengapa Anda harus memberikan pointer kepada json.Unmarshal?
Ringkasan
encoding/json:
json.Marshalmengubah nilai Go menjadi JSONjson.Unmarshalmenguraikan JSON ke dalam pointer- Tag mengganti nama kunci; angka didekodekan sebagai float64 ke dalam interface{}
- Selalu periksa kesalahan yang dikembalikan
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Tinjauan encoding/json” gratis?
Ya — teks lengkap “Tinjauan encoding/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 “Tinjauan encoding/json”?
Marshal dan unmarshal JSON 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 1 dari 4.
Berapa lama pelajaran “Tinjauan encoding/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
- Tinjauan encoding/json
- encoding/xml
- encoding/csv
- gob dan Encoding Biner