JSON RawMessage Modification



假设我有以下json原始消息,我解封为组件结构,取出json值,v。Id和v.name。传递给一些dfs函数,并返回给我好东西。然后将它们分配给id和name。

我意识到在for循环中,它已经更新为好的东西,但是,当我退出for循环时,它不更新原始JSON原始消息。是否有任何方法来更新原始JSON消息,而不是只是在循环内?

if err := json.Unmarshal(inputs.Components, &component); err != nil {
panic(err)
}   
for _, v := range component {
if _, ok := map[v.id+"-"+v.Name]; ok {
var c string
var m string
raw_info1, raw_info2 := dfs(v.id, v.Name, map, &c, &m)
v.id = raw_info1
v.name = raw_info2
}
}

我假设在这种情况下组件是一个映射,而不是一个结构体,否则你不能像那样迭代。当您对组件进行排序时,您可以"逐个"获取键和值。因此,您修改的不是组件的元素,而是它们的副本。要修改组件,您应该像这样重写逻辑:

component[key] = v

我实际上是回marshal这样它就会修改unmarshall raw json对象中的值

最新更新