Javascript中的JSON解析,项数未知

Javascript中的JSON解析,项数未知,javascript,json,Javascript,Json,我正在用处理JSON数据的最佳方法绘制一个空白,该方法将采用以下形式: [{"latlng":"42.6674996,-71.1786423"}, {"latlng":"53.8136722,-1.7301123"}] var p = '[{"latlng":"42.6674996,-71.1786423"}, {"latlng":"53.8136722,-1.7301123"}]', 它也将具有可变长度。 我在查看所有数据对时遇到问题,无法提取latlng值。 我

我正在用处理JSON数据的最佳方法绘制一个空白,该方法将采用以下形式:

[{"latlng":"42.6674996,-71.1786423"}, 
 {"latlng":"53.8136722,-1.7301123"}]

var p = '[{"latlng":"42.6674996,-71.1786423"}, 
          {"latlng":"53.8136722,-1.7301123"}]',
它也将具有可变长度。
我在查看所有数据对时遇到问题,无法提取latlng值。
我正在使用代码:

for (var key in p) {
  if (p.hasOwnProperty(key)) {
    alert(key + " -> " + p[key]);
  }
}

从另一个问题:

但是,上述示例中的格式与我的不同。
如何依次循环每个键/值,直到JSON字符串用完?
我对JSON和Javascript有点陌生。

使用:

或者本地人:

var json='[{“latlng”:“42.6674996,-71.1786423”},{“latlng”:“53.8136722,-1.7301123”}];
var parsed=JSON.parse(JSON);
var count=parsed.length;
对于(变量i=0;i
您始终可以使用
JSON.parse
(在任何远程现代浏览器上)获取JSON字符串并获取相关的javascript结构。一旦你有了它,你可以在结构上迭代

那么你从

var json='[{“latlng”:“42.6674996,-71.1786423”},{“latlng”:“53.8136722,-1.7301123”}]

然后,您可以通过

var ari=JSON.parse(JSON)

从这里开始,您只需跳一跳,就可以在数组上进行迭代、获取当前元素并执行所需操作

注意你的结构,而不是返回

{“latlng”:“42.6674996,-71.1786423”}

对于数组中的每个元素,您应该执行以下操作

{“lat”:“42.6674996”,“long”:“-71.1786423”}

这样,当您迭代数组时,您可以执行以下操作

…在您的for循环中

var current = ary[i];
var lat = current.lat;
var long = current.long;

您必须先将该字符串转换为对象,然后才能安全地对其进行迭代:

var p = JSON.parse('[{"latlng":"42.6674996,-71.1786423"}, {"latlng":"53.8136722,-1.7301123"}]');

for(key = 0; key < p.length; key++) { // Start the key at zero, increment until it his the object's length
  if (p.hasOwnProperty(key)) { // If the item has a key
    alert(key + " -> " + p[key]);  // Alert the key and then the item. 
  }
} 
为了更好地理解这一点,请查看初始对象语法

[
  { // key 0
    "latlng": "42.68, -71.18" // key 'latlng'
  },
  { // key 1
    "latlng": "53.81, -1.73" // key 'latlng'
  }
]

因此,本质上,您使用循环递增的值遍历对象。如果你有一个包含5个项目的对象,你的循环将获取该数字并循环5次(0..4)。每次循环时,递增的
变量将用于选择您的项目,您可以从中获取
latlng
键并在嵌套对象中返回其值。

因此每个对象可以具有比
latlng
更多的属性?或者问题出在哪里
p
在您的示例中是一个字符串,您在实际代码中正确解析了JSON吗?请注意,我更正了您链接到的问题。OP有一个JavaScript对象,而不是JSON。你也一样。解析JSON之后,就有了一个JavaScript数组。我假设您知道如何迭代数组,如果不知道,请看一下。我投票结束了这个问题。你的问题是什么还不清楚。如果您不知道如何迭代数组,请阅读MDN JavaScript指南,正如我已经说过的(您必须学习基础知识)。如果您不知道如何解析JSON,请查看。如何迭代对象的属性在您链接到的问题中进行了解释。你只需要把这些部分放在一起。如果他不使用jQuery怎么办?他为什么要重新发明轮子?使用
JSON.parse
和一个简单的
for
循环并不是重新发明轮子。我不会包含一个完整的库来做语言本机提供的事情。如果这个轮子不适合他的车怎么办?在我看来,就没有标记为jQuery的问题建议jQuery应该作为注释保留。至少,添加免责声明。在这种情况下,OP可以只使用JSON.parse,因为它比jQueryThere轻得多,所以它可以满足大多数需求。在这里,我添加了原生JSON的使用。您不应该使用
中对…进行迭代。
var p = JSON.parse('[{"latlng":"42.6674996,-71.1786423"}, {"latlng":"53.8136722,-1.7301123"}]');

for(key = 0; key < p.length; key++) { // Start the key at zero, increment until it his the object's length
  if (p.hasOwnProperty(key)) { // If the item has a key
    alert(key + " -> " + p[key]);  // Alert the key and then the item. 
  }
} 
alert(p[key]['latlng']);
[
  { // key 0
    "latlng": "42.68, -71.18" // key 'latlng'
  },
  { // key 1
    "latlng": "53.81, -1.73" // key 'latlng'
  }
]