Parsed JSON仅包含最后一个元素

时间:2013-09-24 09:45:57

标签: javascript json

在将JSON字符串转换为对象后的以下代码中,第二个控制台语句仅为我提供了忽略第一个元素的最后一个元素。为什么?我怎样才能获得第一个元素?

        var key_val_pair = keyvalues;  
        console.log(key_val_pair);  //{"4":"123","4":"456"}

        key_val_pair = JSON.parse(key_val_pair);
        console.log(key_val_pair); // {"4":"456"}
       for(var entry in key_val_pair)
       {
            console.log(entry); 
            console.log(key_val_pair[entry]); 
       }

3 个答案:

答案 0 :(得分:2)

对象中的每个键都是唯一的。因此,当您将对象(使用重复键4)转换为对象时,必须删除其中一个值。

注意:您不会将字符串转换为JSON。该字符串包含JSON,您将其转换为JavaScript对象!

答案 1 :(得分:1)

如果你有

,你会有什么期望?
var a;
a = "123";
a = "456";

你期望同时拥有123和456吗?不,你希望它只有456,因为它会覆盖123的原始值。同样的事情发生在你的对象中,第二个“4”键会覆盖第一个值。

如果每个键需要多个值,那么它需要是一个数组。应该是什么样的

{ "4": ["123","456"] }

答案 2 :(得分:1)

var myArray = [];
myArray[0] = 1;
console.log(myArray[0]);
myArray[0] = 2;
console.log(myArray[0]);

您希望第二个console.log打印什么?显然,2,对吧?因为,我们写入相同的索引。

同样,在JSON数据中,456被写入先前存储123的同一位置。这就是为什么缺少第一个元素。