Go 如何将[]字节解组到json结构中,该结构作为值存储在string类型的变量中?
注意:myjsonstruct是从数据库存储和读取的。为清晰起见,硬编码Go 如何将[]字节解组到json结构中,该结构作为值存储在string类型的变量中?,go,marshalling,unmarshalling,Go,Marshalling,Unmarshalling,注意:myjsonstruct是从数据库存储和读取的。为清晰起见,硬编码 myjsonstruct := `{"fldA":"", "fldB":"", "fldC":""}` targetJsonString := `{"fldA":"valueA","fldB":"valueB","fldC":"valueC","fldOther":"valueOther"}` 现在,我想将targetJsonString解组为myjsonstruct,以便填充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”:“}
在游乐场:
(!)
另请注意,myjsonstruct
中的字段必须是公共字段(以大写字母开头),否则解编程序将无法访问这些字段。请参阅此,相关的/可能的副本。不是一个完全相同的复制品,但同样的技术也可以在这里应用。@icza谢谢!这正是我所需要的。@icza这一个有效,但对于json中的数组部分,我必须编写大量自定义代码。我试图找出是否有一种更简单的方法来做到这一点。在编写代码时,我们不知道json结构。无论如何,感谢上面的代码。