go - 如何将 []byte 解组为 json 结构,该结构存储为字符串类型变量中的值?
问题描述
注意: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":""}
在操场上:https: //play.golang.org/p/qUkGAmvsmAD
(!)
另请注意,其中的字段myjsonstruct
必须是公共的(以大写字母开头),否则 unmarshaller 将无法访问这些字段。
推荐阅读
- node.js - React Native 错误:您当前正在使用 Redux 在 NODE_ENV === 'production' 之外使用缩小代码
- python - 这三种解决方案的时间复杂度是多少?
- python - 如何将已安装的软件包移动到新创建的虚拟环境?
- firebase - Firestore 数据上的嵌套 v-for 循环反应性地复制最深层的更改
- css - 使网格或弹性框中的项目每行具有相等的动态列数
- facebook - Facebook 受众广告会在亚马逊设备上运行吗?
- vue.js - 添加新添加的项目时,VueJS 索引会更新吗?
- python-3.x - 使用经过训练的 ANN 做出新的预测 - Keras
- python - 将对象从 AWS S3 移动到 MediaStore
- reactjs - 如何将材质 ui 组件包装为字段的 redux 表单组件?