Imbas Kembali encoding/json
Marshal dan unmarshal JSON
Imbas Kembali encoding/json ialah pelajaran Go Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Go Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
JSON dalam Go
JSON ialah format data yang paling biasa untuk API. Pakej standard Go encoding/json menukar nilai Go kepada teks JSON dan sebaliknya.
Marshal: Go kepada JSON
json.Marshal menukar nilai Go kepada hirisan bait JSON. Tukarkannya kepada rentetan 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))
}Menukar Struktur
Struktur ditukar medan demi medan. Medan yang dieksport 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 kepada Go
json.Unmarshal menghuraikan bait JSON menjadi nilai Go. Hantar penuding supaya fungsi itu dapat mengisi pemboleh ubah 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)
}Teg untuk Nama Kunci
Gunakan teg json untuk mengawal nama kunci, seperti yang diterangkan sebelum ini. Di sini, Name dipetakan kepada nama kunci JSON.
package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string "json:\"name\""
}
func main() {
b, _ := json.Marshal(User{"Ann"})
fmt.Println(string(b))
}Sentiasa Periksa Ralat
Kedua-dua Marshal dan Unmarshal mengembalikan ralat. Dalam kod sebenar, jangan sekali-kali mengabaikannya; JSON yang tidak sah atau jenis yang tidak disokong akan menghasilkan ralat.
package main
import (
"encoding/json"
"fmt"
)
func main() {
var v int
err := json.Unmarshal([]byte("not json"), &v)
fmt.Println(err)
}Menyahkod ke dalam Peta
Apabila anda tidak mengetahui bentuk data terlebih dahulu, lakukan unmarshal ke dalam 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"])
}Hirisan dan Tatasusunan
Tatasusunan JSON dipetakan kepada hirisan Go. Menukar hirisan kepada JSON menghasilkan tatasusunan JSON.
package main
import (
"encoding/json"
"fmt"
)
func main() {
b, _ := json.Marshal([]string{"a", "b", "c"})
fmt.Println(string(b))
}Pencetakan Terformat
json.MarshalIndent menambahkan inden supaya hasil 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))
}Nombor Menjadi float64
Apabila menyahkod ke dalam interface{}, semua nombor JSON menjadi float64 dalam Go. Tukarkannya secara jelas 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)
}Kitaran Pergi Balik
Anda boleh menukar data kepada JSON kemudian menghuraikannya semula untuk menyalin data melalui JSON. Nilai akan kembali tanpa berubah bagi jenis yang disokong.
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)
}Semakan Ringkas
Mengapakah anda perlu menghantar penuding kepada json.Unmarshal?
Imbas Kembali
encoding/json:
json.Marshalmenukar nilai Go kepada JSONjson.Unmarshalmenghuraikan JSON ke dalam penuding- Teg menamakan semula kunci; nombor dinyahkod sebagai float64 ke dalam interface{}
- Sentiasa periksa ralat yang dikembalikan
Pelajari Go dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 51
- Pelajaran
- 203
Soalan Lazim
Adakah pelajaran “Imbas Kembali encoding/json” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Go Academy, termasuk “Imbas Kembali encoding/json”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Go Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Imbas Kembali encoding/json”?
Marshal dan unmarshal JSON Anda berlatih Go Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Go Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Go Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Imbas Kembali encoding/json” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Go Academy ini?
Ya. Setiap pelajaran Go Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Imbas Kembali encoding/json
- encoding/xml
- encoding/csv
- gob dan Pengekodan Binari