如何在解码和编码后检查JSON的相等性

时间:2016-03-14 07:13:17

标签: javascript json decode encode equality

data = {
    json: 'is life'
};

anoth = JSON.parse(JSON.stringify(data));

if (data == anoth){
    console.log("yes")
}else{
    console.log("nah")
}

console.log(data, anoth)

它们显然是平等的,但为什么它在代码中不起作用

2 个答案:

答案 0 :(得分:0)

因为您正在将对象引用相互比较。反序列化原始序列化JSON对象时,返回了一个新的不同对象。两者具有相同的内容,但它们是不同的对象实例。如果你比较JSON.stringify()版本,你会得到一个匹配。



data = {
    json: 'is life'
};

anoth = JSON.parse(JSON.stringify(data));

if (data == anoth){
    alert("Objects are same.")
}else{
    alert("Objects are not same.")
}

if (JSON.stringify(data) == JSON.stringify(anoth)){
    alert("Content is same")
}else{
    alert("Content is not same.")
}

alert(JSON.stringify(data) + "\n" + JSON.stringify(anoth))




答案 1 :(得分:0)

您应该比较两个对象是否相等,但在您的示例中,您只比较引用Object comparison in JavaScript