Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menetapkan Nilai Lalai untuk Medan JSON yang Hilang dalam Go?

Bagaimanakah Saya Boleh Menetapkan Nilai Lalai untuk Medan JSON yang Hilang dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-18 17:40:15245semak imbas

How Can I Set Default Values for Missing JSON Fields in Go?

Menyesuaikan JSON Parsing Default dalam Go

Apabila menghuraikan JSON dalam Go, memberikan nilai lalai kepada medan yang tidak ada boleh meningkatkan manipulasi data. Begini cara anda boleh mencapainya menggunakan pakej pengekodan/json atau memanfaatkan pustaka Go luaran.

Menggunakan pengekodan/json

Pakej pengekodan/json menawarkan penyelesaian yang mudah . Daripada menghantar struct kosong kepada json.Unmarshal, anda boleh memulakannya dengan nilai lalai. Contohnya:

type Test struct {
    A string "a"
    B string "b"
    C string
}

example := []byte(`{"A": "1", "C": "3"}`)

out := Test{}
err := json.Unmarshal(example, &out)
if err != nil {
    panic(err)
}
fmt.Printf("%+v", out)

Menggunakan Perpustakaan Luaran

Jika pakej pengekodan/json tidak memenuhi keperluan anda sepenuhnya, terdapat perpustakaan Go luaran yang menyediakan JSON yang dipertingkatkan fungsi menghurai. Satu pilihan yang popular ialah perpustakaan go-json, yang membolehkan anda menentukan nilai lalai untuk medan yang tiada menggunakan teg struct.

import (
    "encoding/json"
    "github.com/go-json"
)

type Test struct {
    A string `json:"a,omitempty"`
    B string `json:"b,omitempty"`
    C string `json:"c,omitempty"`
}

example := []byte(`{"A": "1", "C": "3"}`)

out := Test{
    DefaultA: "a",
    DefaultB: "b",
    DefaultC: "c",
}

err := json.Unmarshal(example, &out)
if err != nil {
    panic(err)
}
fmt.Printf("%+v", out)

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menetapkan Nilai Lalai untuk Medan JSON yang Hilang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn