【问题标题】:Looping through JSON format in javascript [closed]在javascript中循环JSON格式[关闭]
【发布时间】:2014-10-10 11:38:25
【问题描述】:

我是一个新手,正在尝试制作一个用 javascript 编写的公交车站应用程序。

我需要构建一个带有街道 ID 和街道名称的 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。

我也尝试在 Google 和此处为 JSON 解析搜索构建一个简单的 for 循环,但我是 JSON 新手,所有解决方案都不适合我的需求。

请有人教我怎么做...同时我会研究 JSON 是如何工作的。

【问题讨论】:

  • 那么......这里的实际问题是什么?如何“循环通过(a)json(字符串)”?你一定尝试过什么……
  • 是的@Sumurai8,我很着急,在发帖之前我没有阅读所有问题..

标签: javascript json loops for-loop foreach


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你的数据结构中不应该有索引器,所以使用 id 代替 id1 和 street 代替 street1,结构中元素的位置决定了它的索引。想象一下名称中的索引器会发生什么情况,有 500 个公交车站,而您需要在索引 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);
    }
    

    【讨论】:

    • 谢谢你教我这个。你的解决方案和哈立德的一样好,不幸的是我只能接受一个答案!
    【解决方案3】:

    这就是你可以循环访问这个 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

    上的示例

    【讨论】:

    • 感谢@Khalid 帮助我。您的解决方案符合我的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 2018-07-12
    • 1970-01-01
    • 2016-08-26
    • 2017-02-19
    • 1970-01-01
    相关资源
    最近更新 更多