当前位置: 首页 > 面试题库 >

通过Javascript遍历复杂的JSON对象的最简单方法

高海阳
2023-03-14
问题内容

我正在使用具有一些奇怪结构的JSON数据,例如:

{
    "RESULT": 
    {
        "COLUMNS": ["ID","name","ENABLED","perms","vcenabled","vcvalue","checkenabled","checkvalue","indxenabled","indxvalue"],
        "DATA": [
                    [7,"Site-A", 1, "1,2", 1, 1, 1, 0, 0, 0],
                    [15,"Site-B", 1, "1,2,3,4", 1, 1, 1, 0, 0, 0]
        ]
    },
    "ERROR": 0
}

我想创建一些JavaScript,将这些数据重组为适当的JSON结构,以使“列”数组值成为“数据”数组值的键。因此,在运行JS进程后,数据类似于以下内容:

[
  {"ID":7,"name":"Site-A","ENABLED":1,"perms":"1,2","vcenabled":1,"vcvalue":1,"checkenabled":1,"checkvalue":1,"indxenabled":1,"indxvalue":1},
  {"ID":15,"name":"Site-B","ENABLED":1,"perms":"1,2","vcenabled":1,"vcvalue":1,"checkenabled":1,"checkvalue":1,"indxenabled":1,"indxvalue":1}

]

完成JSON重组的JavaScript最佳做法是什么?我可以使用JQuery,Foundation JS等JS框架完成此任务吗?


问题答案:

newjson是您的新对象,j是您的json,

代码非常快,因为它缓存了很多信息,并且不使用push。

而且由于它是纯JavaScript,因此比所有库都快。

var j={
 "RESULT":{
  "COLUMNS":[
   "ID",
   "name",
   "ENABLED",
   "perms",
   "vcenabled",
   "vcvalue",
   "checkenabled",
   "checkvalue",
   "indxenabled",
   "indxvalue"
  ],
  "DATA":[
   [7,"Site-A", 1, "1,2", 1, 1, 1, 0, 0, 0],
   [15,"Site-B", 1, "1,2,3,4", 1, 1, 1, 0, 0, 0]
  ]
 },
 "ERROR": 0
}

var newjson=[],d=j.RESULT.COLUMNS.length;
for(var a=0,b=j.RESULT.DATA.length;a<b;a++){
 for(var c=0,tmpObj={};c<d;c++++){
  tmpObj[j.RESULT.COLUMNS[c]]=j.RESULT.DATA[a][c];
 }
 newjson[a]=tmpObj;
}

console.log(newjson);

根据Bergi的响应,您还可以使用while–循环。

var orig={
 "RESULT":{
  "COLUMNS":[
   "ID",
   "name",
   "ENABLED",
   "perms",
   "vcenabled",
   "vcvalue",
   "checkenabled",
   "checkvalue",
   "indxenabled",
   "indxvalue"
  ],
  "DATA":[
   [7,"Site-A", 1, "1,2", 1, 1, 1, 0, 0, 0],
   [15,"Site-B", 1, "1,2,3,4", 1, 1, 1, 0, 0, 0]
  ]
 },
 "ERROR": 0
}

var formatted = [],
data = orig.RESULT.DATA,
cols = orig.RESULT.COLUMNS,
l = cols.length,
f = data.length;

while (f--) {
  var d = data[f],
      o = {},
      g = l;
  while (g--) {
    o[cols[g]] = d[g];
  }
  formatted[f] = o;
}


 类似资料:
  • 问题内容: 我在使用jQuery / Ajax / JSON时遇到问题。我正在使用像这样的jQuery ajax帖子… 据我了解,这将返回一个JavaScript JSON对象?Ajax发布产生的文本是这样的(我相信这是有效的JSON)… 我似乎无法弄清楚如何解析jQuery ajax帖子返回的JSON对象…基本上,我想循环遍历并像这样返回每个学生组成一个div … 我似乎无法弄清楚该怎么做… 谢

  • 问题内容: 我很难找到一种以我想要的方式遍历此JSON对象的方法。我在这里只使用Javascript。 首先,这是对象 现在,我正在尝试基本方法来访问此对象上的每个dialog_trunk。理想情况下,我想遍历对象,并为每个主干显示其值。 我已经尝试过使用for循环动态地生成dialog_trunk的名称/编号,但是我无法使用对象名称的字符串来访问该对象,因此我不确定从何处去。 问题答案: 为此使

  • 我遇到了一个APIendpoint,得到了如下结果。 我想匹配数组中的元素 我尝试了以下方法: 但观察到以下例外: 预期:“#[]ind”,原因:没有数组或列表,请有人帮忙?

  • 本文向大家介绍JavaScript简单遍历DOM对象所有属性的实现方法,包括了JavaScript简单遍历DOM对象所有属性的实现方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript遍历DOM对象所有属性的实现方法。分享给大家供大家参考,具体如下: DOM对象的HTML: 1、遍历DOM对象所有具备的属性(全属性、不管在HTML tag中是否设置都会遍历) 2、遍历DO

  • 问题内容: 我正在尝试遍历JSON对象以导入数据,即标题和链接。我似乎无法掌握过去的内容。 JSON: 我尝试使用字典: 此代码仅在之前打印信息。( 忽略贾斯汀·比伯的曲目 :) 问题答案: 您加载JSON数据有些脆弱。代替: 您实际上应该这样做: 您不应该将“ JSON对象”视为什么。您所拥有的是清单。该列表包含两个字典。字典包含各种键/值对,所有字符串。当您这样做时,您将要求列表中的第一个字典

  • 本文向大家介绍js遍历map javaScript遍历map的简单实现,包括了js遍历map javaScript遍历map的简单实现的使用技巧和注意事项,需要的朋友参考一下 js遍历map javaScript遍历map的简单实现 这样会把map给遍历掉,显示在浏览器上的控制器里。 以上这篇js遍历map javaScript遍历map的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参