(AS3)来自对象的确定性JSON字符串?

时间:2017-02-14 17:13:01

标签: json actionscript-3 object

var obj:Object = {a:"foo", b:"bar", c:"baz", d:"qux"};
trace(JSON.stringify(obj));

什么决定了这个对象的值添加到JSON字符串的顺序是什么?

我需要JSON始终完全相同,所以我不能让它们处于不同的顺序,它们似乎是跨越不同的客户端。

上下文:我正在散列JSON字符串,并比较服务器上的哈希值以确定客户端是否已被删除。

1 个答案:

答案 0 :(得分:3)

您不能依赖JSON对象键以任何顺序。如果要创建一致的哈希,则需要将密钥排序为数组并散列:

var fields:Array = [];
for (var key:String in obj) {
  fields.push({key: key, value: obj[key]});
}
fields.sortOn("key");
hash(fields);