json.Unmarshal 是否保持 JSON 数组的顺序

Does json.Unmarshal maintain order of JSON arrays

json.Unmarshal 是否保留传入的 JSON 个数组的顺序?

我知道在 JSON 本身,数组不能维持秩序。但是,如果使用相同的数据集调用 2 次 json.Unmarshal,我能否保证将数组解组到的 go 切片的顺序将具有相同的顺序?

是的,排序是 array data structures 的基础 属性,所以当 un/marshaling 切片和数组进出 JSON 时,go 会隐式维护它。

但是请注意,Associative arrays, called "Objects" in JSON and "Map types" in go(或简称为“地图”)是“一组无序的元素”,因此 un/marshaling 它们往返于 JSON 保留 key/value 对的顺序。

最后,根据 json.Marshal(...).

,将结构编组为 JSON 对象(也称为关联数组)确实会根据结构字段的顺序维护键的顺序