注意:myjsonstruct已存储并从数据库中读取。进行硬编码以保持清晰度
myjsonstruct := `{"fldA":"", "fldB":"", "fldC":""}`
targetJsonString := `{"fldA":"valueA","fldB":"valueB","fldC":"valueC","fldOther":"valueOther"}`
现在,我想将targetJsonString
解组到myjsonstruct
,以便填充myjsonstruct
中的相应字段。
请注意:myjsonstruct是一个“字符串”,无法在代码中进行编程。我在编码时不知道这种结构。在运行时可能会从字符串中将其读取为字符串。
谢谢!
答案 0 :(得分:5)
尝试一下:
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":""}
在操场上:https://play.golang.org/p/qUkGAmvsmAD
(!)
另外请注意,myjsonstruct
中的字段必须是公开的(从大写字母开始),否则解组员将无法访问这些字段。