当前位置: 首页 > 知识库问答 >
问题:

使用流将地图列表中的特定条目提取到新地图

樊令秋
2023-03-14

给定一个org。布森。文档

{  
  "doneDate":"",
  "todoEstimates":"",
  "forecastDate":"",
  "cardType":{
    "projectData":[
      {
        "color":"#ffcd03",
        "boardId":"30022"
      },
      {
        "color":"#ffcd03",
        "boardId":"1559427"
      }
    ],
    "cardFields":[
      {
        "fieldName":"id",
        "fieldLabel":"Unique ID",
        "fieldType":"Integer",
        "itemType":"Long",
        "isRequired":"NO",
        "isReadOnly":"Yes",
        "isDisabled":"NO",
        "inputMethod":"System Generated",
        "defaultValue":null,
        "isUserType":"No"
      },
      {
        "fieldName":"name",
        "fieldLabel":"Title",
        "fieldType":"Single-Line Text",
        "itemType":"String",
        "isRequired":"Yes",
        "isReadOnly":"NO",
        "isDisabled":"NO",
        "inputMethod":"Manual Entry",
        "defaultValue":null,
        "isUserType":"No"
       }
    ]
}

如何通过流将fieldNamefieldLabel的值提取到以下内容中?

{
   "id": "Unique ID",
   "name:" "Title",
   ...
}

我尝试了以下方法,但在获取cardFields列表值的部分遇到了问题。

document.entrySet().stream().filter(e -> e.getKey().equals("cardType"))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))
.entrySet().stream().filter(e -> e.getKey().equals("cardFields"))
        .map(e -> (Map)e.getValue()).toList();

共有1个答案

劳鹏云
2023-03-14

您可以这样解析您的文档:

Document cardType = document.get("cardType", Document.class);
final Class<? extends List> listOfMaps = new ArrayList<Map<String, String>>().getClass();
List<Map<String, String>> fields = cardType.get("cardFields", listOfMaps);
fields.stream().map(f -> {
    System.out.println(f.get("fieldName") + ": " + f.get("fieldLabel"));
    // here you can construct your new object
}).collect(Collectors.toList());
 类似资料:
  • 假设我有一个多映射,如下所示: 第一个步骤是将字符串拆分为一个数组,因为最初它是一个逗号分隔的字符串。然后,我找到任何值中的最大元素数,循环该次数的条目中的所有值,并用结果为每个值创建一个映射。坦率地说,我上周五写了这段代码,但我已经不能正确地阅读它... 所以,一开始这是一件简单的事情,但我最终陷入了混乱,有没有更好的方法来做这件事? 提前谢了。

  • 问题内容: 我怎么能展平的(同类型)s到一个用Java 8? 问题答案: 我的语法可能有些偏离,但是flatMap应该为您完成大部分工作:

  • 我试图翻译这个(简化)代码使用Java-8流: 以下是我尝试过的: 但以上给出了所有

  • 我正在使用AWSJavaSDK的DynamoDBMapper,并处理一个相当简单的项目:它有一个字符串属性(用作哈希键)和一个map属性。 我可以使用和方法读写我的对象。我遇到的问题是,当我需要在映射中为表中的现有项更新或添加单个条目时。在不知道所述项的映射的现有条目的情况下(并且我不想每次尝试更新或添加之前都执行),我似乎能做的最好的事情就是删除整个映射,并用我尝试更新或添加的单个条目替换它。是

  • 问题内容: 我有一个使用字符串作为键和值的映射。我有一个键数组,用于指定地图值的顺序。 我想将该映射序列化为JSON,但要保持数组上定义的顺序。 这里有一个示例代码:http : //play.golang.org/p/A52GTDY6Wx 我想将其序列化为: 但是,如果我直接序列化地图,则密钥按字母顺序排列: 我可以将其序列化为地图数组,从而保持顺序,但是会生成很多不需要的字符: 在我的真实代码

  • 问题内容: 我想将 每个地图条目转换为-列表中的1个条目作为“键-值” 我搜索了,只发现将值仅映射到List。 我希望将此映射到列表为 等等。 如果我使用foreach,可以很容易地做到这一点,但是我想知道通过流获取它是否可行 问题答案: