Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Meratakan Output sql.NullString Marshalled dalam Go?

Bagaimana untuk Meratakan Output sql.NullString Marshalled dalam Go?

Barbara Streisand
Lepaskan: 2024-11-28 07:58:14
asal
366 orang telah melayarinya

How to Flatten the Output of a Marshalled sql.NullString in Go?

Bagaimana untuk Meratakan dan Mengeluarkan Nilai Sahaja daripada Marshalled sql.NullString in Go?

Memandangkan struct Golang dengan medan sql.NullString, tingkah laku marshaling lalai menghasilkan output di mana medan bersarang di dalam objek JSON dengan kekunci String dan Sah. Untuk mencapai output diratakan yang mengandungi hanya nilai NullString, ikuti langkah berikut:

1. Tentukan Jenis Tersuai:

Buat jenis tersuai yang membenamkan sql.NullString dan melaksanakan antara muka json.Marshaler.

type MyNullString struct {
    sql.NullString
}
Salin selepas log masuk

2. Laksanakan Kaedah MarshalJSON:

Di dalam MyNullString, laksanakan kaedah MarshalJSON untuk menyediakan tingkah laku marshalling JSON tersuai.

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

3. Ubah suai Struct:

Gunakan jenis MyNullString tersuai untuk medan dalam struct yang memerlukan perataan.

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

Contoh:

package main

import (
    "database/sql"
    "encoding/json"
    "log"
)

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"`
}

func main() {
    company := Company{
        ID:   68,
        Abn:  MyNullString{String: "SomeABN", Valid: true},
    }

    result, err := json.Marshal(company)
    if err != nil {
        log.Fatal(err)
    }

    // Output: {"id":68,"abn":"SomeABN"}
    log.Println(string(result))
}
Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh meratakan output sql.NullString dengan berkesan medan dan dapatkan hanya nilai dalam JSON marshall anda.

Atas ialah kandungan terperinci Bagaimana untuk Meratakan Output sql.NullString Marshalled dalam Go?. 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