如何用 javascript 重新格式化(转换)我的 json 结果?
How to reformat (transform) my json results with javascript?
我有一个简单的循环,可以从更大的数据集中提取 json 个对象的子集。
function getData(d) {
var data = {};
for (var i=0; i < d.length; i++){
data[i] = {
'date' : d[i].date,
'light' : Math.round(d[i].details.light/60),
'deep' : Math.round(d[i].details.deep/60),
'awake' : Math.round(d[i].details.awake/60),
'duration': Math.round(d[i].details.duration/60),
'quality': Math.round(d[i].details.quality*10)
};
console.log(data[i]);
};
return data;
}
getData(d);
它生成 json 形式的结果,
{
date: 20150809,
light: 168,
deep: 206,
awake: 64,
duration: 438,
quality: 100
}, ...
我怎样才能把它变成想要的形式,
[{
"key":"light",
"date":20150809,
"value":168
},
{
"key":"deep",
"date": 20150809,
"value":206
},
{
"key":"awake",
"date":20150809,
"value":64
},
{
"key":"duration",
"date": 20150809,
"value":438
},
...
{
"key":"quality",
"date":20150809,
"value":6100
}]
我的问题是,如果不对数据集进行五次迭代(5 种键类型各一次),我该如何实现这一点?我假设至少需要进行一次迭代。 jquery
解决方案是可以接受的。
我正在寻找一个包含所有 json 对象的数组,而不是嵌套对象的关联数组。
谢谢
考虑对象
{
date: 20150809,
light: 168,
deep: 206,
awake: 64,
duration: 438,
quality: 100
}
您想将每个键变成一个对象,而不是遍历每个对象。我想要以下内容:
function convertToJson(obj){
var myJson = {};
var myKeys = obj.keys(); // return an array with the keys of the object
myJson.keys = myKeys[1];
myJson.date = myKeys[0]; // your date
myJson.value = obj.light;
... // do the same with the rest of the elements, if you don't want to loop.
return JSON.stringfy(myJson);
}
我不是 javascript 大师,所以我很感激任何反馈。
假设您的数据在数组中,格式如下:
var data = [
{
date: 20150809,
light: 168,
deep: 206,
awake: 64,
duration: 438,
quality: 100
},
{
date: 20153203,
light: 2,
deep: 21,
awake: 21,
duration: 21,
quality: 32
}
...
];
您可以尝试这样的操作:
var results = [];
data.forEach(function(e) {
for (var key in e) {
if (key !== 'date')
results.push({
key : key,
date : e.date,
value : e[key]
});
}
});
我有一个简单的循环,可以从更大的数据集中提取 json 个对象的子集。
function getData(d) {
var data = {};
for (var i=0; i < d.length; i++){
data[i] = {
'date' : d[i].date,
'light' : Math.round(d[i].details.light/60),
'deep' : Math.round(d[i].details.deep/60),
'awake' : Math.round(d[i].details.awake/60),
'duration': Math.round(d[i].details.duration/60),
'quality': Math.round(d[i].details.quality*10)
};
console.log(data[i]);
};
return data;
}
getData(d);
它生成 json 形式的结果,
{
date: 20150809,
light: 168,
deep: 206,
awake: 64,
duration: 438,
quality: 100
}, ...
我怎样才能把它变成想要的形式,
[{
"key":"light",
"date":20150809,
"value":168
},
{
"key":"deep",
"date": 20150809,
"value":206
},
{
"key":"awake",
"date":20150809,
"value":64
},
{
"key":"duration",
"date": 20150809,
"value":438
},
...
{
"key":"quality",
"date":20150809,
"value":6100
}]
我的问题是,如果不对数据集进行五次迭代(5 种键类型各一次),我该如何实现这一点?我假设至少需要进行一次迭代。 jquery
解决方案是可以接受的。
我正在寻找一个包含所有 json 对象的数组,而不是嵌套对象的关联数组。
谢谢
考虑对象
{
date: 20150809,
light: 168,
deep: 206,
awake: 64,
duration: 438,
quality: 100
}
您想将每个键变成一个对象,而不是遍历每个对象。我想要以下内容:
function convertToJson(obj){
var myJson = {};
var myKeys = obj.keys(); // return an array with the keys of the object
myJson.keys = myKeys[1];
myJson.date = myKeys[0]; // your date
myJson.value = obj.light;
... // do the same with the rest of the elements, if you don't want to loop.
return JSON.stringfy(myJson);
}
我不是 javascript 大师,所以我很感激任何反馈。
假设您的数据在数组中,格式如下:
var data = [
{
date: 20150809,
light: 168,
deep: 206,
awake: 64,
duration: 438,
quality: 100
},
{
date: 20153203,
light: 2,
deep: 21,
awake: 21,
duration: 21,
quality: 32
}
...
];
您可以尝试这样的操作:
var results = [];
data.forEach(function(e) {
for (var key in e) {
if (key !== 'date')
results.push({
key : key,
date : e.date,
value : e[key]
});
}
});