Go Academy · Pelajaran

Imbas Kembali encoding/json

Marshal dan unmarshal JSON

Pelajaran 1 daripada 413 langkah

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.Marshal menukar nilai Go kepada JSON
  • json.Unmarshal menghuraikan JSON ke dalam penuding
  • Teg menamakan semula kunci; nombor dinyahkod sebagai float64 ke dalam interface{}
  • Sentiasa periksa ralat yang dikembalikan
Percuma untuk bermula

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

  1. Imbas Kembali encoding/json
  2. encoding/xml
  3. encoding/csv
  4. gob dan Pengekodan Binari
← Kembali ke Go Academy