Jsonlint显示此JSON对象有效:
[{"obj":{"markers":"[{\"k\":47.040182144806664,\"B\":0.52734375},{\"k\":50.90303283111257,\"B\":10.37109375},{\"k\":52.53627304145945,\"B\":-1.7578125},{\"k\":41.77131167976406,\"B\":-6.591796875}]","path":"[[47.040182144806664,0.52734375],[50.90303283111257,10.37109375],[52.53627304145945,-1.7578125],[41.77131167976406,-6.591796875]]"}}]
我尝试使用k,B和路径元素访问标记,但它始终设置为未定义。这是我的代码:
try {
var jsonData = JSON.parse(myJson);
console.log(jsonData.obj[0].markers[0].k);
}
catch (e) {
console.error("Parsing error:", e);
}
有人能告诉我如何正确访问我的JSON对象的元素吗?谢谢你的帮助。
答案 0 :(得分:2)
创建此字符串时必定出错。是的,它是有效的JSON,但它的格式与您想象的不同,因为您可以转义控制字符,例如"
和[
,]
。
请尝试使用此字符串:
[
{
"obj":{
"markers":[
{
"k":47.040182144806664,
"B":0.52734375
},
{
"k":50.90303283111257,
"B":10.37109375
},
{
"k":52.53627304145945,
"B":-1.7578125
},
{
"k":41.77131167976406,
"B":-6.591796875
}
],
"path":[
[
47.040182144806664,
0.52734375
],
[
50.90303283111257,
10.37109375
],
[
52.53627304145945,
-1.7578125
],
[
41.77131167976406,
-6.591796875
]
]
}
}
]
而不是你的字符串:
[
{
"obj":{
"markers":"[{\"k\":47.040182144806664,\"B\":0.52734375},{\"k\":50.90303283111257,\"B\":10.37109375},{\"k\":52.53627304145945,\"B\":-1.7578125},{\"k\":41.77131167976406,\"B\":-6.591796875}]",
"path":"[[47.040182144806664,0.52734375],[50.90303283111257,10.37109375],[52.53627304145945,-1.7578125],[41.77131167976406,-6.591796875]]"
}
}
]
答案 1 :(得分:0)
我可以告诉你两个问题:
一,是的,它是有效的Json,但标记和路径对象值用数字引号括起来:
"markers":"[{\"k\":47.040182144806664,\"B\":0.52734375},{\"k\":50.90303283111257,\"B\":10.37109375},{\"k\":52.53627304145945,\"B\":-1.7578125},{\"k\":41.77131167976406,\"B\":-6.591796875}]",
"path":"[[47.040182144806664,0.52734375],[50.90303283111257,10.37109375],[52.53627304145945,-1.7578125],[41.77131167976406,-6.591796875]]"
你最想要的是:
"markers":[{"k":47.040182144806664,"B":0.52734375},{"k":50.90303283111257,"B":10.37109375},{"k":52.53627304145945,"B":-1.7578125},{"k":41.77131167976406,"B":-6.591796875}],
"path":[[47.040182144806664,0.52734375],[50.90303283111257,10.37109375],[52.53627304145945,-1.7578125],[41.77131167976406,-6.591796875]]
但是考虑到上述情况,也没有逃避标记的k和b对象名称\" k \"应该是" k":
所以完成编辑的JSON看起来像这样:
[{"obj":{"markers":[{"k":47.040182144806664,"B":0.52734375},{"k":50.90303283111257,"B":10.37109375},{"k":52.53627304145945,"B":-1.7578125},{"k":41.77131167976406,"B":-6.591796875}],"path":[[47.040182144806664,0.52734375],[50.90303283111257,10.37109375],[52.53627304145945,-1.7578125],[41.77131167976406,-6.591796875]]}}]