有没有办法序列化结构的空数组属性(非空)并将其反序列化回空数组(再次非空)?
考虑到空数组实际上是指向null的指针,在序列化/反序列化之后,空数组和指向null的指针之间的可感知初始差异是否完全丢失?
最糟糕的实际情况是,当我第一次向我的 REST 客户端显示一个空数组属性时,作为 json "att":[],并且在缓存注册到 redis 并恢复它之后,相同的属性是向我的客户显示为“att”:null,导致契约(Contract)破裂并且造成很多困惑。
总结:在序列化/反序列化之后,可以像 json 空数组一样显示客户 2 地址 => https://play.golang.org/p/TVwvTWDyHZ
最佳答案
我很确定你能做到的最简单的方法就是改变你的线路
var cust1_recovered Customer
到
cust1_recovered := Customer{Addresses: []Address{}}
除非我读错了你的问题,否则我相信这是你想要的输出:
ORIGINAL Customer 2 {
"Name": "Customer number 2",
"Addresses": []
}
RECOVERED Customer 2 {
"Name": "Customer number 2",
"Addresses": []
}
这里是一个验证的 Playground :https://play.golang.org/p/T9K1VSTAM0
这里的限制,正如@mike 指出的那样,如果 Addresses
在编码之前真的是 nil
,一旦你解码,你就不会得到 json 等效的 null
,但最终会得到一个空列表。
关于json - Golang 序列化/反序列化一个空数组而不是 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33183071/