繁体   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