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

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)

现在,我想解组targetJsonStringmyjsonstruct的,这样相应的字段中myjsonstruct填入搞定.

请注意:myjsonstruct是一个"字符串",无法在代码中编程.我在编码时不知道这个结构.它将在运行时读取为字符串,可能来自数据库.

谢谢!

Ale*_*hek 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))
}
Run Code Online (Sandbox Code Playgroud)

它将打印: {"fldA":"valueC","fldB":"","fldC":""}

在游乐场:https://play.golang.org/p/qUkGAmvsmAD

(!)另请注意,字段myjsonstruct必须是公共的(从大写字母开始),否则unmarshaller将无法访问这些字段.