Chủ đề Go quan trọng
Go JSON: Marshal and Unmarshal
Turn structs into JSON and JSON into structs, with struct tags to choose the field names.
Bạn sẽ học được gì
- json.Marshal
- json.Unmarshal
- Struct tags and omitempty
Round trip
- 1
Product{...}a struct - 2
json.Marshal{"name":"Go Book",...} - 3
json.Unmarshalback to a struct
Structs to JSON and back
The encoding/json package converts Go values to JSON text and JSON text back to Go values. Struct tags choose the names used in the JSON.
Marshal turns the struct into JSON bytes, using the names from the json tags. Unmarshal fills a struct from JSON and needs a pointer so it can change the value. omitempty leaves a field out when it is empty, and a missing field keeps its zero value.
Những điểm quan trọng
- Tags choose the names used in JSON.
- Unmarshal needs a pointer.
- omitempty leaves out empty fields.
Ví dụ Go chạy được
main.go
package main
import (
"encoding/json"
"fmt"
)
type Product struct {
Name string `json:"name"`
Price float64 `json:"price"`
Tags []string `json:"tags,omitempty"`
}
func main() {
book := Product{Name: "Go Book", Price: 12.5, Tags: []string{"go", "learning"}}
data, err := json.Marshal(book)
if err != nil {
fmt.Println("error:", err)
return
}
fmt.Println(string(data))
var parsed Product
input := `{"name":"Pen","price":1.25}`
if err := json.Unmarshal([]byte(input), &parsed); err != nil {
fmt.Println("error:", err)
return
}
fmt.Printf("%s costs %.2f, tags: %d\n", parsed.Name, parsed.Price, len(parsed.Tags))
}
{"name":"Go Book","price":12.5,"tags":["go","learning"]}
Pen costs 1.25, tags: 0Luyện tập
Mở ví dụ trong trình biên dịch online, đổi một giá trị hoặc thêm một dòng, rồi đoán kết quả trước khi chạy. Sau đó cố ý làm code bị lỗi và đọc thông báo của trình biên dịch.
Bạn học xong bài này chưa?
Đánh dấu đã học để theo dõi tiến độ của bạn.
Tiến độ của bạn đang được lưu trong trình duyệt này Đăng nhập để giữ tiến độ trên mọi thiết bị.
Luyện tập với thử thách
Áp dụng kiến thức của bài học này để giải một bài toán thực tế. Mỗi thử thách chạy ngay trên trình duyệt, có kiểm thử tức thì và AI nhận xét.
- Tạo đối tượng JSON Biến các khóa và giá trị thành một chuỗi đối tượng JSON, thoát dấu ngoặc kép và dấu gạch chéo ngược đúng cách. Dễ
- Cộng các số trong đối tượng JSON phẳng Phân tích một đối tượng JSON phẳng có các giá trị là số nguyên và cộng các giá trị đó lại. Dễ