因此,我正在努力从https://www.aviationweather.gov/dataserver提取数据并将其存储在mongoDB中。该API返回XML,并且使用xml2js模块作为节点,我可以相当轻松地将其转换为JSON并将其存储在mongodb中。但是,xml2js模块的转换并非100%完美,因此我想在事后修改一些输出,但是我不确定从哪里开始。我希望有人能朝着正确的方向推动我。
这是xml2js转换的当前JSON输出。我只对相关部分进行了整理...让我知道您是否需要全部内容:
结果是这样的:
"sky_condition": {
"$": {
"sky_cover": "OVC",
"cloud_base_ft_agl": "1600"
}
有多个结果,看起来像这样(最多可以有4个结果):
"sky_condition": [{
"$": {
"sky_cover": "BKN",
"cloud_base_ft_agl": "1800"
}
}, {
"$": {
"sky_cover": "OVC",
"cloud_base_ft_agl": "4100"
}
}]
我希望有一种方法可以使它看起来像这样(以及多达4个可能的“云层”:
"sky_condition": [
{
"sky_cover": "OVC",
"cloud_base_ft_agl": "1600"
}
],
我希望这很清楚,并且我真的很感激我付出的任何帮助。
您可以遍历对象的关键点,并在看到$
关键点时将天空条件推入数组。
假设API返回以下内容:
let objRet = {
someKey: "someObject",
someOtherKey: "someOtherObject",
"sky_condition": [{
"$": {
"sky_cover": "BKN",
"cloud_base_ft_agl": "1800"
}
}, {
"$": {
"sky_cover": "OVC",
"cloud_base_ft_agl": "4100"
}
}]
}
然后,我们设计一个函数:
function processObj(obj){
for(let key in obj){
if(typeof obj[key] == "object"){
//If content of obj[key] is an object, process it
processObj(obj[key]);
}
if(key == "$"){
//If key is '$', push the contents of the key to our array of conditions
skyConditions.push(obj[key]);
}
}
}
我们这样称呼:
let skyConditions = [];
processObj(objRet);
objRet["sky_condition"] = skyConditions;
console.log(objRet);
将返回:
{
someKey: "someObject",
someOtherKey: "someOtherObject",
"sky_condition":[
{
"sky_cover": "BKN",
"cloud_base_ft_agl": "1800"
},{
"sky_cover": "OVC",
"cloud_base_ft_agl": "4100"
}
]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句