簡體   English   中英

使用 Golang 解組 JSON 字符串

[英]Unmarshalling JSON string with Golang

我有以下 json 字符串

{"x":{"la":"test"}}

type Object struct {
    Foo  map[string]map[string]string `json:"l.a"`
    }
     var obj Object
    err = json.Unmarshal(body, &obj)
    if err != nil{
        fmt.Println(err)
    }
    fmt.Println("jsonObj", obj)

但是讓空任何想法我怎樣才能得到字符串“test”

使用您的代碼, Unmarshal正在 JSON 的頂層尋找la (它不存在 - x存在)。

有很多方法可以解決這個問題,最好的方法取決於你的最終目標; 這里有幾個(操場

const jsonTest = `{"x":{"l.a":"test"}}`

type Object struct {
    Foo map[string]string `json:"x"`
}

func main() {
    var obj Object
    err := json.Unmarshal([]byte(jsonTest), &obj)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println("jsonObj", obj)

    var full map[string]map[string]string
    err = json.Unmarshal([]byte(jsonTest), &full)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println("jsonObj2", full)

}

(輸入此內容時接到電話,請參閱@DavidLilue 提供了類似的評論,但不妨發布此內容)。

您始終可以創建一個結構來解組您的 json

type My_struct struct {
    X struct {
        LA string `json:"l.a"`
    } `json:"x"`
}

func main() {
    my_json := `{"x":{"l.a":"test"}}`
    var obj My_struct
    json.Unmarshal([]byte(my_json), &obj)
    fmt.Println(obj.X.LA)
}

在這里,您正在創建一個結構,然后將您的 json 字符串解組為其 object,因此當您執行obj.X.LA時,您將獲得該字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM