簡體   English   中英

修改從 Node.js 中的 API 檢索的 JSON 數據

[英]Modifying JSON data retrieved from an API in Node.js

因此,我正在從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"
        }
    ]
}

您可以使用 xml-js 而不是 xml2js。 它不添加"$"鍵並返回一個整潔的對象,然后您不必創建單獨的函數來重構 JSON。 https://www.npmjs.com/package/xml-js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM