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

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是从数据库存储和读取的。为清晰起见,硬编码

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结构。无论如何,感谢上面的代码。