簡體   English   中英

如何使用節點 JS 將兩個 HashMap 轉換為單個 JSON 數組

[英]How to convert two HashMap into single JSON array using node JS

我在兩個 HashMap 中有一個數據,我只是使用嵌套的 for 循環打印它,如下所示:

注意:我剛才提到的輸入只是舉例。 實際的 hashmap 包含運行時數據,這些數據應該存儲為 key:value 對。

代碼:

     let index=0;

     getData.forEach(function(value,key){
         utils.getIndividualComponentCompletLog(key,'./output/output'+index+'.json');
         let getError =  utils.getErrorDataFromComponent('./output/output'+index+'.json');
     getError.forEach(function(value,key){
         console.log(value);
        })
        index++;
    })

在地圖中輸入:

 Map 1: {"a":"1","b":"2","c":"3"} and  Map 2: {"d":"4","e":"5"}

上面的代碼 getData 和 getError 是 HasMap,我只想使用上面的兩個 hashmap 值創建一個 JSON 數組,如下所示:

預期的:

 {
       data :[
               {
                 "a" : "1",
                 "b" : "2",
                 "c" : "3"
                },
                {
                 "d" : "4",
                 "e" : "5"
                }
             ]
     }

我不確定如何實現這一目標。 有人可以給我一些想法或任何 npm 包都可以做到這一點

還為單個 HashMap 嘗試了 JSON.stringify() (不確定如何將它用於兩個 hasmap 並將其合並單個)。 但它沒有給出上述格式。

更新:

嘗試了以下幾行將其轉換為 JSON 數組。 嘗試使用一個哈希圖。

代碼

 const output = {
                data: [
                    getError
                ]
              }
    console.log(JSON.stringify(output, null, 2));

getError 是包含一些值的哈希圖

輸出:

{
  "data": [
    {
      "_data": {},
      "size": 0
    }
  ]
}
{
  "data": [
    {
      "_data": {},
      "size": 0
    }
  ]
}
{
  "data": [
    {
      "_data": {},
      "size": 0
    }
  ]
}

如果您有(Hash)MapObject.fromEntries()可以從中創建“常規”對象。 然后JSON.stringify()將起作用:

 let map1 = new Map([["a","1"],["b","2"],["c","3"]]); let map2 = new Map([["d","4"],["e","5"]]); console.log("With fromEntries()",JSON.stringify( {data:[Object.fromEntries(map1),Object.fromEntries(map2)]} )); console.log("Without fromEntries()",JSON.stringify({data:[map1,map2]}));

Object.fromEntries()似乎在 IdeOne.com 上不起作用(我附近沒有其他 node.js 環境),但是forEach()的解決方法可以:

 function objectify(map) { let obj = {}; map.forEach((key,value)=>obj[key]=value); return obj; } let map1 = new Map([["a","1"],["b","2"],["c","3"]]); let map2 = new Map([["d","4"],["e","5"]]); console.log(JSON.stringify( {data:[objectify(map1),objectify(map2)]} ));

Node.js 測試: https : //ideone.com/Esgc9R

暫無
暫無

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

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