Easiest way to interate over a complex JSON object via Javascript

后端 未结 7 1918
生来不讨喜
生来不讨喜 2020-12-21 07:19

I\'m consuming JSON data that has a bit of a weird structure for example:

{
    \"RESULT\": 
    {
        \"COLUMNS\": [\"ID\",\"name\",\"ENABLED\",\"perms\         


        
7条回答
  •  北荒
    北荒 (楼主)
    2020-12-21 07:47

    newjson is your new object, j is your json,

    code is very fast as it caches the legth and don't uses push.

    And as it's pure javascript it's faster than all the libraries.

    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

    based on Bergi's response u can also use the while-- loop.

    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;
    }
    

提交回复
热议问题