var obj:Object = {a:"foo", b:"bar", c:"baz", d:"qux"};
trace(JSON.stringify(obj));
什么决定了这个对象的值添加到JSON字符串的顺序是什么?
我需要JSON始终完全相同,所以我不能让它们处于不同的顺序,它们似乎是跨越不同的客户端。
上下文:我正在散列JSON字符串,并比较服务器上的哈希值以确定客户端是否已被删除。
答案 0 :(得分:3)
您不能依赖JSON对象键以任何顺序。如果要创建一致的哈希,则需要将密钥排序为数组并散列:
var fields:Array = [];
for (var key:String in obj) {
fields.push({key: key, value: obj[key]});
}
fields.sortOn("key");
hash(fields);