我使用 encoding/json
来序列化结构。我对 json.Marshal
函数的输出感到困惑。序列化的字段内容是否严格按照struct定义中的顺序?
例如这是一个结构定义
type MyStruct struct {
Field1 string
Field2 string
}
输出可以是{"Field2":"field2","Field1":"field1"}
吗?因为如果输出结构字段乱序,序列化内容的散列将是不确定的。
最佳答案
当前的实现是确定性的,例如对于结构,请参阅 https://golang.org/src/encoding/json/encode.go#L629它给出了结构顺序(并且映射是按排序的键)。
但由于文档不保证这一点,您应该将其视为实现细节。
如果你想对输出进行哈希处理,你将面临更多问题,例如字符串中有几种等效的字符表示,而 JSON 没有 int 的概念(仅限 float )。这实际上取决于您尝试对该哈希执行的操作。
关于json - 序列化后的内容是否严格按照定义中的顺序使用encoding/json包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44755089/