Динамическое создание объекта JSON по заданным параметрам - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть объект 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 голосов
/ 07 декабря 2011

Если вы попытались повторить исходный объект, вы, вероятно, не так уж и сделали. Вам просто нужно создать новый объект:

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, вывод в журнал консоли вашего браузера .

...