【问题标题】:filter Objects in list using java 8 streams使用 java 8 流过滤列表中的对象
【发布时间】:2021-11-08 12:46:33
【问题描述】:

我有包含 person 对象的 personList 列表 Person 对象包含 as

personsList = personListService.getPersons(id);
  • person.firstName
  • person.lastName
  • person.dateOfBirth
  • person.age

现在我想用只有 firstName 和 LastName 翻译每个 Person 对象的 peopleList 例如:列表包含 Person 对象,但对象应该只有名字和姓氏

[
   {
      "firstName":"ABC",
      "lastName":123
   },
   {
      "firstName":"DEF",
      "lastName":456
   },
   {
      "firstName":"GHI",
      "lastName":789
   }
]

【问题讨论】:

  • 您想要输出为 JSON 吗?

标签: java stream


【解决方案1】:

现在我想翻译每个 Person 对象的 peopleList,只有 firstName 和 LastName 例如:列表包含 Person 对象但对象应该只有 firstName 和 lastName

好的,所以你想将数据的子集作为 JSON ... 为此,有一个 @JsonIgnore 注释。

将您希望在 JSON 中显示为的所有字段标记为

class Person { 
  String firstName;
  String lastName;
  
  @JsonIgnore
  // This field will not be serialized to JSON
  String homeAdddress
}

编辑

你可以像这样创建一个类...

class PersonData {
 String firstName,
 String lastName,
  
 PersonData(Person p) {
   this.firstName = p.firstName;
   this.lastName = p.lastName
 } 

}

然后这样做......

personsList = personListService.getPersons(id);
var personDataList = personList.stream(p -> PersonData(p)).collect(toList());

// Serealize personDataList to json

告诉我它在 cmets 中是否适合你。

【讨论】:

  • 我不能使用@JsonIgnore 注释,因为我在很多地方都使用了这个对象,我只想提取所需的字段并复制到新列表中
  • 添加了评论
猜你喜欢
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多