在javascript中循环使用JSON格式

时间:2014-08-17 10:30:39

标签: javascript json loops for-loop foreach

我是一个新手试图用javascript编写一个巴士停止应用程序。

我需要构建一个ID为street和街道名称的JSON。

我已经建立了这个json:

{
    "id1": "2001",
    "street1": "street name a",
    "id2": "1297",
    "street2": "street name b",
    "id3": "1347",
    "street3": "street name c",
    "id4": "3310",
    "street4": "street name d",
    "id5": "4770",
    "street5": "street name e",
    "id6": "3133",
    "street6": "street name f",
    "id7": "3230",
    "street7": "street name g",
    "id8": "1471",
    "street8": "street name h",
    "id9": "1002",
    "street9": "street name i",
    "id10": "3816",
    "street10": "street name l"
}

有10个站点可供选择,但只需要一个。

我需要在纯javascript,没有jQuery或其他JS框架中执行此操作。

所以我想循环这个JSON以检查哪个id未定义,以便仅使用带有值的id。

我尝试在谷歌和这里建立一个简单的for循环用于JSON解析搜索,但我是JSON的新手,并且所有解决方案都不适合我的需求。

请有人教我如何做...同时我将研究JSON的工作原理。

3 个答案:

答案 0 :(得分:2)

将您的JSON重新定义为对象数组,您可以使用索引遍历它:

var stops = [
    {"id": "2001",
    "street": "street name a"},
    {"id": "1297",
    "street": "street name b"}
    ...
]

答案 1 :(得分:2)

您的数据结构中不应该有索引器,因此使用id而不是id1和street而不是street1,元素在结构中的位置决定了它的索引。想象一下,在名称中有一个索引器会发生什么,五百个公共汽车站,你需要在索引3处设置一个新的公共汽车站?

所以数据结构变成了:

var busstops = [
    { "id": "2001", "street": "street name a"}, 
    { "id": "1297", "street": "street name b"}, 
    { "id": "1347", "street": "street name c"},
    { "id": "3310", "street": "street name d"},
    { "id": "4770", "street": "street name e"}, 
    { "id": "3133", "street": "street name f"}, 
    { "id": "3230", "street": "street name g"}, 
    { "id": "1471", "street": "street name h"}, 
    { "id": "1002", "street": "street name i"}, 
    { "id": "3816", "street ": "street name l"}
]

不,你可以循环它:

var i = 0;
while (stop = busstops[i++]) {
    alert(stop.id);
}

答案 2 :(得分:1)

这是循环浏览这个json对象的方法。

您可以将json定义分配给变量,如果这个json定义必须使用function JSON.parse()

解析它
var data = {
    "id1": "2001",
    "street1": "street name a",
    "id2": "1297",
    "street2": "street name b",
    "id3": "1347",
    "street3": "street name c",
    "id4": "3310",
    "street4": "street name d",
    "id5": "4770",
    "street5": "street name e",
    "id6": "3133",
    "street6": "street name f",
    "id7": "3230",
    "street7": "street name g",
    "id8": "1471",
    "street8": "street name h",
    "id9": "1002",
    "street9": "street name i",
    "id10": "3816",
    "street10": "street name l"
}

如果你知道这个对象有多少个公共汽车站,你可以这样做

var stops = 10;
for (var i=1;i<=stops;i++)
{
    var id = data['id'+i];  // it returns '2001' in the first iteration 
    var street = data['street'+i]; // it returns 'street name a' in the first iteration 
}

以下是 jsFiddle

的示例