注意:myjsonstruct 是从数据库存储和读取的。为清楚起见硬编码
myjsonstruct := `{"fldA":"", "fldB":"", "fldC":""}`
targetJsonString := `{"fldA":"valueA","fldB":"valueB","fldC":"valueC","fldOther":"valueOther"}`
现在,我想将 targetJsonString
解码到 myjsonstruct
中,以便填充 myjsonstruct
中的相应字段。
请注意:myjsonstruct 是一个“字符串”,不能在代码中编程。我在编码时不知道这个结构。它将在运行时作为字符串读取,可能来自数据库。
谢谢!
最佳答案
试试这个:
package main
import (
"encoding/json"
"fmt"
)
type myjsonstruct struct {
FldA string `json:"fldA"`
FldB string `json:"fldB"`
FldC string `json:"fldC"`
}
func main() {
targetJsonString := `{"fldA":"valueA","fldA":"valueB","fldA":"valueC","fldOther":"valueOther"}`
res := &myjsonstruct{}
if err := json.Unmarshal([]byte(targetJsonString), res); err != nil {
panic(err)
}
myjsonstructBytes, err := json.Marshal(res)
if err != nil {
panic(err)
}
fmt.Println(string(myjsonstructBytes))
}
它将打印:
{"fldA":"valueC","fldB":"","fldC":""}
在 Playground 上:https://play.golang.org/p/qUkGAmvsmAD
(!)
另请注意,myjsonstruct
中的字段必须是公开的(从大写字母开始),否则 unmarshaller 将无法访问这些字段。
关于go - 如何将 []byte 解码为 json 结构,该结构作为值存储在字符串类型的变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52835458/