我有这个功能:
// This function just add `_x` to all key and `_y` to all values
var data = {
glossary: {
title: "example glossary",
GlossDiv: {
title: "S",
GlossList: {
GlossEntry: {
ID: "SGML",
SortAs: "SGML",
GlossTerm: "Standard",
Acronym: "SGML",
Abbrev: "1986",
GlossDef: {
para: "DocBook.",
GlossSeeAlso: "GMLXML"
},
GlossSee: "markup"
}
}
}
}
};
function treee(data) {
Object.keys(data).map(function(key) {
if (data[key] && typeof data[key] === 'object') {
treee(data[key]);
}
data[key + '_x'] = typeof data[key] === 'string' ? data[key] + '_y' : data[key];
delete data[key];
});
}
treee(data);
console.log(data);

我想改变他的行为。我希望'_x'
是我从http请求收到的数据(我使用的是npm,你可以看到doc here):
我尝试过使用它来使其工作但仍然无法正常工作。
这就是我的成就:
var data = {
"glossary": {
"title": "example",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Language",
"Acronym": "SGML",
"Abbrev": "ISo",
"GlossDef": {
"para": "DocBook.",
"GlossSeeAlso": "GMLXML"
},
"GlossSee": "markup"
}
}
}
}
}
var http = require('request');
function treee(data) {
Object.keys(data).map(function(key) {
new Promise(function(resolve, reject) {
http({
url: 'url',
headers: {
'User-Agent': 'request'
}
},
function(err, res, body) {
if (err) {
console.log('err');
console.log(err);
resolve("err")
}
if (data[key] && typeof data[key] === 'object') {
treee(data[key]);
}
resolve(body.data)
}
);
}).then(function(d) {
data[key + d.x] = typeof data[key] === 'string' ? data[key] + '_y' : data[key];
delete data[key];
});
});
}
treee(data);
console.log(data);

我的问题是如何从网络获取数据并添加到我的json中。除了_x
来自http请求之外,我想要几乎相同的行为...
谢谢