gpt4 book ai didi

json - 编码/解码后的结构变化

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:08 26 4
gpt4 key购买 nike

我目前遇到的问题是在将结构保存到 json 文件然后从 json 文件打开结构后,结构的属性以某种方式发生了轻微的变化。

在struct N中,有时A和B可以指向同一个J,但是经过encode再decode后指向不同的J值。

在编码之前返回 true(预期)。解码后,它返回 false(不是预期的)

fmt.Println("is same pointer", n.A[0] == n.B[0])

这是应该发生的吗?有没有解决的办法。谢谢。

type N struct {
A []*J
B []*J
C []*J
}

func (n *N) Save(name string) {
name = "radacted.json"
err := os.Remove(name)
file, err := os.Create(name)
defer file.Close()
if err != nil {
fmt.Println(err)
}
bytes, err := json.Marshal(n)
file.Write(bytes)
}

func Open(name string) *N {
bytes, err := ioutil.ReadFile("redacted.json")
if err != nil {
log.Fatal("decode error:", err)
}
var n NeuralNetwork
json.Unmarshal(bytes, &n)

return &n
}

最佳答案

这是预期和记录的行为

Pointer values encode as the value pointed to.

你可以断言值相等

*n.A[0] == *n.B[0]  //should stay

关于json - 编码/解码后的结构变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42134152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com