gpt4 book ai didi

json - 如何在 golang 中使用 Unmarshal 从 json 文档中获取结构中的 json 字符串

转载 作者:数据小太阳 更新时间:2023-10-29 03:27:17 26 4
gpt4 key购买 nike

示例代码

package main

import (
"encoding/json"
"fmt"
)

type ClassRoom struct {
Student struct {
Name string
/*
Address struct {
City string
Zip int
} `json:"address"`
*/
Address []string `json:"address"` //here, Want to get json string
Age int `json:"age"`
} `json:"student"`
ClassCode int `json:"code"`
}

func main() {
jsonDocs := `[
{"student":{"name":"jss","address":{"City":"Seoul","Zip":54},"Age":28},"ClassCode":1234}]`

var node []ClassRoom

json.Unmarshal([]byte(jsonDocs), &node)
fmt.Println(node)
}

我想要 json 字符串类型的地址变量(如 {"City":"Seoul"...})。

最佳答案

您需要使用 json.RawMessage代替 []string,例如:

type ClassRoom struct {
Student struct {
Name string
Address json.RawMessage `json:"address"` //here, Want to get json string
Age int `json:"age"`
} `json:"student"`
ClassCode int `json:"code"`
}

func main() {
jsonDocs := `[{"student":{"name":"jss","address":{"City":"Seoul","Zip":54},"Age":28},"ClassCode":1234}]`
var node []ClassRoom

json.Unmarshal([]byte(jsonDocs), &node)
fmt.Printf("%s\n", node[0].Student.Address)

var addr struct {
City string
Zip int
}
json.Unmarshal(node[0].Student.Address, &addr)
fmt.Printf("%+v", addr)
}

playground

关于json - 如何在 golang 中使用 Unmarshal 从 json 文档中获取结构中的 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36951986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com