首页 > 解决方案 > 将动态地图转换为列表?

问题描述

我有一张包含以下数据的地图

{LABEL3Access=RW, LABEL3Match3type=path, LABEL3Match3subType=path, LABEL2Match2type=chassis123, LABEL2Match2subType=chassis123, LABEL1Labelname=com.model.Equipment, LABEL1Access=R, LABEL3Labelname=com.model.Test, LABEL1Match1subType=chassis, LABEL1Match1type=chassis, LABEL2Labelname=com.model.Service, LABEL2Access=CWRD}

如果您检查此映射,每个键包含 1 或 2 或 3,并且它可以包含 4、5、6 依此类推,因为这是一些用于分隔事物的动态映射,所以我添加了一个数字。现在,当我从数据库返回此映射数据时,我必须转换成这样的 JSON 格式

"labels":[  
      {  
         "labelName":"com.model.Equipment",
         "access":"R",
         "match":{  
            "type":"chassis",
            "subType":"chassis"
         }
      },
      {  
         "labelName":"com.model.Service",
         "access":"CWRD",
         "match":{  
            "type":"chassis123",
            "subType":"chassis123"
         }
      },
       {  
         "labelName":"com.model.Test",
         "access":"RW",
         "match":{  
            "type":"path",
            "subType":"path"
         }
       }
   ]

一种方法是去 Map 的每个键,如果包含特定的数字添加到列表中,但它看起来不可行,因为 Map 是动态的,可以包含任意数量的key,value对,我尝试在

new JSONObject(mapData);

但这也没有给出正确的 JSON 数据。如果不是 Json 数据至少转换成 List 组?

标签: javajson

解决方案


您正在寻找的东西不是很通用。遍历 JsonObject 是可行的,但您希望在每次迭代中执行的操作是您的调用。

Object.entries(jsonObj).forEach(([key, value]) => {
    // do something with key and val
});

希望这会为您指明正确的方向。


推荐阅读