Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Meratakan Output JSON daripada struct Go yang mengandungi sql.NullString?

Bagaimana untuk Meratakan Output JSON daripada struct Go yang mengandungi sql.NullString?

Mary-Kate Olsen
Lepaskan: 2024-12-02 19:20:13
asal
578 orang telah melayarinya

How to Flatten JSON Output from a Go struct containing sql.NullString?

Marshaling sql.NullString for Flattened Output

Masalah

Memandangkan struct Go yang mengandungi sql.NullString, menyusun struct menggunakan pengekodan/json produces objek bersarang bukannya diratakan yang dikehendaki nilai.

type Company struct {
    ID   int             `json:"id"`              
    Abn  sql.NullString  `json:"abn,string"`
}
Salin selepas log masuk

Sebagai contoh, menyusun struktur sedemikian menghasilkan output seperti:

{
    "id": "68",
    "abn": {
        "String": "SomeABN",
        "Valid": true
    }
}
Salin selepas log masuk

Walau bagaimanapun, output yang dikehendaki diratakan:

{
    "id": "68",
    "abn": "SomeABN"
}
Salin selepas log masuk

Penyelesaian

Menyesuaikan kaedah MarshalJSON untuk jenis NullString dengan menentukan jenis baharu membolehkan untuk output yang lebih terkawal.

type MyNullString struct {
    sql.NullString
}

func (s MyNullString) MarshalJSON() ([]byte, error) {
    if s.Valid {
        return json.Marshal(s.String)
    }
    return []byte(`null`), nil
}

type Company struct {
    ID   int          `json:"id"`              
    Abn  MyNullString `json:"abn,string"`
}
Salin selepas log masuk

Dengan melaksanakan antara muka json.Marshaler, jenis MyNullString boleh mengawal cara ia diwakili sebagai JSON. Apabila ia bukan nol, ia mengembalikan rentetan asas dan untuk nilai nol, ia mengembalikan rentetan "null" literal.

Contoh yang disediakan dalam taman permainan kod menunjukkan gelagat yang diingini:

https://play.golang.org/p/Ak_D6QgIzLb
Salin selepas log masuk

Penyelesaian ini meratakan output dengan mengabaikan medan Sah dan mengembalikan nilai rentetan secara langsung.

Atas ialah kandungan terperinci Bagaimana untuk Meratakan Output JSON daripada struct Go yang mengandungi sql.NullString?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan