json :: Object中键的顺序

时间:2014-12-01 05:16:29

标签: rust

无论我在这里使用什么订单

let mut tm = TreeMap::new();
tm.insert("aaa".to_string(), "val1".to_json());
tm.insert("zzz".to_string(), "val2".to_json());

//or
// tm.insert("zzz".to_string(), "val2".to_json());
// tm.insert("aaa".to_string(), "val1".to_json());

let a = json::Object(tm);
println!("Json is {}", a)

结果json总是一样的:

json is {"aaa":"val1","zzz":"val2"}

但我希望订单与insert操作中的订单相同。怎么样?

1 个答案:

答案 0 :(得分:1)

通常,依赖JSON中的键顺序是一个非常糟糕的主意。通常,底层数据结构是一个哈希表,它不保留顺序(标准不需要它,并且哈希映射证明是实现这种无序映射的最有效方式)。有一些JSON解析器/生成器的实现可以保留顺序(有些甚至允许重复),但是你永远不能依赖这种行为。

因此,实现所需结果的最佳方法是使用一对数组(一对可以是数组或映射)。保留数组中元素的顺序。