我正在处理一些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硬编码的结果时我可以很好地访问它,但是当我只在代码中使用它时我会得到不同的东西
有谁知道怎么做?
答案 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 );
}
然后试试你的代码..