javascript - 使用 jQuery 读取 JSON 并通过 ID 匹配字段

标签 javascript jquery json

我目前正在获取包含两个对象的 JSON:一个是 COLUMNS,另一个是 DATA。其中每个都是分别具有适当列名和匹配数据的数组。

这是 JSON:

{  
   "COLUMNS":[  
      "NUM",
      "USERID",
      "NAME",
      "YEARCREATED",
      "LASTCONTACTED",
      "RELATIONSHIP"
   ],
   "DATA":[  
      [  
         8,
         333,
         "Joe Smith",
         2015,
         "January, 19 2015 00:00:00",
         "30 Days"
      ]
   ]
}

我想做的是使用 jQuery 迭代 DATA 数组(当前数组中只有一个对象):

var jsonSource = {"COLUMNS":["NUM","USERID","NAME","YEARCREATED","LASTCONTACTED","RELATIONSHIP"],"DATA":[[8,333,"Joe Smith",2015,"January, 19 2015 00:00:00","30 Days"]]} 

    $.each(jsonSource, function( COLUMNS, DATA ) {
       console.log( jsonSource );
    });

我在控制台中返回的是整个 JSON 树。

如何使输出成为“Joe Smith”(不带引号)?

最佳答案

DATA 是包含实际数据的列数组,因此现在只需忽略 COLUMNS

$.each(jsonSource.DATA, function( COLUMNS, DATA ) {
    console.log( jsonSource );
});

现在查看jQuery.each在文档中您可以看到回调方法获取 indexInArrayvalue 作为参数,因此让我们更新回调。请记住,indexInArray 与 DATA 中存在多少行有关,而不是与 COLUMNS 中的 NAME 等位置相关。

$.each(jsonSource.DATA, function( indexInArray, value ) {
    console.log( jsonSource );
});

现在我们不再输出整个 JSON 树,而是使用每个树的特定迭代。由于我们知道 NAME 是该行中的第三项,因此我们现在只需对其进行硬编码。

$.each(jsonSource.DATA, function( indexInArray, value ) {
    console.log( value[2] );
});

现在假设不能保证 COLUMNS 的顺序。我们总是需要NAME,但它可以是任何列。

$.each(jsonSource.DATA, function( indexInArray, value ) {
    console.log( value[jsonSource.COLUMNS.indexOf('NAME')] );
});

当然,这是一条复杂的线,因此在真实的程序中您可能会想要这样的东西。

function getColumnIndex(columns, key) {
    return columns.indexOf(key)
}

var nameIndex = getColumnIndex(jsonSource.COLUMNS, 'NAME');

$.each(jsonSource.DATA, function( indexInArray, value ) {
    console.log( value[nameIndex] );
});

关于javascript - 使用 jQuery 读取 JSON 并通过 ID 匹配字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28530405/

相关文章:

javascript - 为什么我的 jQuery 队列执行一次后就停止工作?

Javascript else 条件未触发

ios - initWithObjectAndkeys 如何在 iOS 中使用变量

javascript - 在 JavaScript 中添加 2 个函数的输出问题

javascript - iOS App URL Scheme 启动应用或打开应用商店

javascript - Bootstrap 进度动画的比例不正确

c# - 应该和 Json.NET : This passes? ! JToken.Parse ("{}").ShouldBe ("hello");

java - Gson - 放置和获取复合对象的 ArrayList

javascript - 删除 jquery 中单击菜单后的菜单悬停操作

javascript - 事件选项卡是动态更改的,但单击页面上的任意位置更改为第一个选项卡处于事件状态