从给定参数动态创建JSON对象

时间:2011-12-07 12:55:12

标签: javascript json parsing associative-array javascript-objects

我有一个这种类型的json对象:

jsonObject={visits:'3',
        v1:{'timestamp':'1231313.311',
            'time_year':'2011',
            'time_month':'Jan',
            'time_date':'15'
            'X_value':'X'
           },
        v2:{'timestamp':'1231313.311',
            'time_year':'2011',
            'time_month':'Jan',
            'time_date':'15'
            'X_value':'Y'
           },
         v3:{'timestamp':'534224242.311',
            'time_year':'2011',
            'time_month':'Feb',
            'time_date':'5',
            'X_value':'Z'
           }
         }

现在我想把它转换成像......这样的格式。

 JsonObject={'2011':{'Jan':{'15':['X','Y']
                          },
                    'Feb':{'5':'Z'
                          },
                    }
             }

我该怎么做...我已经尝试迭代第一个JSONObject并取出年,月和日期值,但我无法从该数据创建新的JSONObject。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您尝试过迭代原始对象,那么您可能还有很长的路要走。您只需要创建新对象:

var newObject = {};

for(var key in jsonObject) {
    if(key == 'visits')
        continue;

    var year = jsonObject[key]['time_year'];
    var month = jsonObject[key]['time_month'];
    var date = jsonObject[key]['time_date'];

    if(!(year in newObject))
        newObject[year] = {};

    if(!(month in newObject[year]))
        newObject[year][month] = {};

    if(!(date in newObject[year][month]))
        newObject[year][month][date] = [];

    newObject[year][month][date].push(jsonObject[key]['X_value']);
}

JSFiddle demo, outputs into your browser console log