【问题标题】:Dynamic creation of JSON object from given parameters从给定参数动态创建 JSON 对象
【发布时间】:2011-12-07 12:55:12
【问题描述】:

我有一个这种类型的 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。

提前致谢。

【问题讨论】:

  • 这不是 JSON,它只是一个 JavaScript 对象。您的问题似乎与 JSON 无关。

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


【解决方案1】:

如果您尝试过迭代原始对象,那么您可能离完成不远了。您只需要创建新对象:

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.

【讨论】:

    猜你喜欢
    • 2016-10-02
    • 2019-07-27
    • 2016-09-04
    • 2023-01-25
    • 2014-12-13
    • 2020-11-11
    • 2021-07-15
    • 2019-10-21
    • 2016-11-14
    相关资源
    最近更新 更多