如何将[]字节解组到json结构中,该json结构作为值存储在string类型的变量中?

时间:2018-10-16 12:26:58

标签: go marshalling unmarshalling

注意:myjsonstruct已存储并从数据库中读取。进行硬编码以保持清晰度

myjsonstruct := `{"fldA":"", "fldB":"", "fldC":""}`

targetJsonString := `{"fldA":"valueA","fldB":"valueB","fldC":"valueC","fldOther":"valueOther"}`

现在,我想将targetJsonString解组到myjsonstruct,以便填充myjsonstruct中的相应字段。

请注意:myjsonstruct是一个“字符串”,无法在代码中进行编程。我在编码时不知道这种结构。在运行时可能会从字符串中将其读取为字符串。

谢谢!

1 个答案:

答案 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中的字段必须是公开的(从大写字母开始),否则解组员将无法访问这些字段。