nih*_*hal -2 marshalling go unmarshalling
注意:myjsonstruct是从数据库中存储和读取的.硬编码为清晰起见
myjsonstruct := `{"fldA":"", "fldB":"", "fldC":""}`
targetJsonString := `{"fldA":"valueA","fldB":"valueB","fldC":"valueC","fldOther":"valueOther"}`
Run Code Online (Sandbox Code Playgroud)
现在,我想解组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))
}
Run Code Online (Sandbox Code Playgroud)
它将打印:
{"fldA":"valueC","fldB":"","fldC":""}
在游乐场:https://play.golang.org/p/qUkGAmvsmAD
(!)另请注意,字段myjsonstruct必须是公共的(从大写字母开始),否则unmarshaller将无法访问这些字段.