[英]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.