json访问数据未正确显示

时间:2013-12-05 18:10:06

标签: javascript json

我正在处理一些json编码数据,但我无法正确访问它,这是我做过的一些测试:

代码片段1:

var json = [
{"MarkerId":1,"0":1,"UserId":2147483647,"1":2147483647,"locX":51,"2":51,"LocY":4,"3":4},
{"MarkerId":2,"0":2,"UserId":2147483647,"1":2147483647,"locX":55,"2":55,"LocY":4,"3":4}];
console.log(json[0][0]);

输出:

1

代码片段2:

var json2 = getCookie('markers');
console.log(json2[0][0]);

输出:

[

代码片段3:

console.log(getCookie('markers'));

输出:

[{"MarkerId":1,"0":1,"UserId":2147483647,"1":2147483647,"locX":51,"2":51,"LocY":4,"3":4},{"MarkerId":2,"0":2,"UserId":2147483647,"1":2147483647,"locX":55,"2":55,"LocY":4,"3":4}]

正如你所看到的,当我使用测试3硬编码的结果时我可以很好地访问它,但是当我只在代码中使用它时我会得到不同的东西

有谁知道怎么做?

2 个答案:

答案 0 :(得分:5)

Cookies只存储字符串。您需要使用JSON.parse()将它们转换回对象。此外,json的内容不是JSON,而是JAvaScript对象(实际上是数组)。

var obj2 = JSON.parse(getCookie('markers') || '[]');
console.log(obj2[0][0]);

如果由于空字符串或|| '[]'不是有效JSON而缺少cookie,则undefined会回退到空数组。

答案 1 :(得分:1)

getCookie('markers')返回字符串。原生javascript方法JSON.parse(text[, reviver]),将字符串解析为JSON。

 var json2 = getCookie('markers');
 if ( typeof(json2 ) == "string" ) {
      json2 = JSON.parse( json2 );  
 }

然后试试你的代码..