2013-08-02 55 views
1

我有一个json数据,需要将其转换为单独的键值对以添加到数组中。将对象转换为单独模型的最佳方法是什么

将json数据转换为单独的密钥对数据的正确方法是什么?

我正在寻找最佳实践。

这里是我的JSON:

{ 
    "DashBoard":[ 

    {"title":"DashBoard"}, 
    {"widget":[{"slide":"To do"},{"slide":"Teamspace"},{"slide":"Recent Activity"}]}, 
    {"activity":[ 
     {"option":[{"show":"Volvo"},{"show":"Benz"},{"show":"Honda"}]}, 
     {"rows":[ 
      {"row" : {"title":"Advert1", "text":"sample text1", "date":"22-06-2013"} } 
      ,{"row" : {"title":"Advert2", "text":"sample text2", "date":"22-06-2014"} } 
      ,{"row" : {"title":"Advert3", "text":"sample text3", "date":"22-06-2015"} } 
      ,{"row" : {"title":"Advert4", "text":"sample text4", "date":"22-06-2016"} } 
      ,{"row" : {"title":"Advert5", "text":"sample text5", "date":"22-06-2017"} } 
     ]} 
    ]} 

    ] 
} 

我的输出应该是:

var arr = [ 

{"title":"DashBoard"}, 
{"slide":"To do"}, 
{"slide":"Teamspace"}, 
{"slide":"Recent Activity"}, 
{"show":"Volvo"}, 
{"show":"Benz"}, 
{"show":"Honda"} 
{"row" : {"title":"Advert1", "text":"sample text1", "date":"22-06-2013"}, 
{"row" : {"title":"Advert2", "text":"sample text2", "date":"22-06-2014"} 
] 

像这样。

我试着用:

newObj = { 
          "title"  : obj[0], 
          "widget" : obj[1]["widget"], 
          "option" : obj[2].activity[0]["option"], 
          "rows"  : obj[2].activity[1]["rows"] 
         }; 


newObj = { 
      "title"  : obj[0], 
      "widget" : obj[1]["widget"], 
      "option" : obj[2].activity[0]["option"], 
      "rows"  : obj[2].activity[1]["rows"] 
     }; 



    $.each(newObj, function(key, value){ 

     if($.type(value) === "object"){ 
      newColl.push(value); 
     }else if ($.type(value) === "array"){ 

      _.each(value, function(i,v){ 
       newColl.push(i); 
      }) 

     } 



    }) 

但不超过配有最好的结果。任何一个帮助我更正确的方式来得到这个? (基本上我将这一切转换为骨干模型)

回答

3

挑战接受!今天我心情很好,所以在这里你去:

function getArray(input) { 
    var result = []; 
    for (var i in input) { 
     var val = input[i]; 
     if (Object.prototype.toString.call(val) === '[object Array]') { 
      for(var j = 0; j < val.length; j++){ 
       result = result.concat(getArray(val[j])); 
      } 
     } else { 
      var item = {}; 
      item[i] = val; 
      result.push(item); 
     } 
    } 
    return result; 
} 

var output = getArray(input); 

Here is a working example

这是假设input是你原来的对象(而不是一个JSON字符串)。如果您有JSON字符串,请先解析它:

var input = JSON.parse(jsonString); 
相关问题