json访问数据未正确显示

json access data not showing properly

本文关键字:显示 访问 数据 json      更新时间:2024-03-19

我目前正在处理一些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硬编码的结果时,我可以很好地访问它,但当我只在代码中使用它时,我会得到不同的

有人知道怎么做吗?

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

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

如果cookie丢失,则|| '[]'会返回到空数组,因为空字符串或undefined不是有效的JSON。

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

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

然后试试你的代码。。