首頁 > 後端開發 > Golang > 如何在 Golang 解組過程中將 JSON 欄位拆分為字串切片?

如何在 Golang 解組過程中將 JSON 欄位拆分為字串切片?

Susan Sarandon
發布: 2024-10-27 03:20:30
原創
969 人瀏覽過

How to Split a JSON Field into a String Slice During Unmarshaling in Golang?

Golang 中使用字符串拆分的自定義解組

問題:

處理JSON 解組字段需要使用字串操作拆分為切片。具體來說,提供的 JSON 中的“subjects”欄位需要按“-”拆分以建立 [] 字串。

解決方案:

要實現此目的,我們可以定義自訂字串切片類型並為其實作 json.Unmarshaler 介面。具體方法如下:

<code class="go">type strslice []string

func (ss *strslice) UnmarshalJSON(data []byte) error {
    var s string
    if err := json.Unmarshal(data, &s); err != nil {
        return err
    }
    *ss = strings.Split(s, "-")
    return nil
}</code>
登入後複製

此自訂類型將允許我們將「subjects」欄位解組為字串,然後自動將其分割為切片。

修訂的結構:

現在,我們可以更新Student 結構體,為「subjects」欄位使用自訂strslice 類型:

<code class="go">type Student struct {
    StudentNumber int      `json:"student_number"`
    Name          string   `json:"name"`
    Subjects      strslice `json:"subjects"`
}</code>
登入後複製

用法:

透過這些修改,我們現在可以解組提供的JSON 並自動分割「主題」欄位:
<code class="go">func main() {
    var s Student
    err := json.Unmarshal([]byte(src), &s)
    fmt.Println(s, err)
}

const src = `{"student_number":1234567, "name":"John Doe", "subjects":"Chemistry-Maths-History-Geography"}`</code>
登入後複製

輸出:

{1234567 John Doe [Chemistry Maths History Geography]} <nil>
登入後複製

This方法提供了一種乾淨且可自訂的方式來處理欄位轉換,同時解組JSON 資料。

以上是如何在 Golang 解組過程中將 JSON 欄位拆分為字串切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板