修改来自于一个的Node.js API检索JSON数据

问题描述 投票:1回答:2

所以,我正在从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"
    }
],

我希望这是清楚的,我真正体会到被扔我的方式任何帮助。

arrays node.js json
2个回答
1
投票

您可以遍历对象的钥匙,并推动天空状况到一个数组,当你看到$关键。

说的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"
        }
    ]
}

0
投票

您可以使用XML的JS,而不是xml2js。它不添加"$"键和返回一个整洁的对象,那么你不必创建一个单独的功能重构的JSON。 https://www.npmjs.com/package/xml-js

© www.soinside.com 2019 - 2024. All rights reserved.