gpt4 book ai didi

arrays - 修改从 Node.js 中的 API 检索到的 JSON 数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:01:24 24 4
gpt4 key购买 nike

所以,我正在努力从 https://www.aviationweather.gov/dataserver 中提取数据并将其存储在 mongoDB 中。 API 返回 XML,并且使用 Node 的 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"
}
]
}

关于arrays - 修改从 Node.js 中的 API 检索到的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54579664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com