将枚举列表转换为数组
Convert List of enum into array
我有这个枚举结构List<Role>
public enum Role implements GrantedAuthority {
ROLE_ADMIN, ROLE_CLIENT;
public String getAuthority() {
return name();
}
}
我尝试实现这个:
Stream<String> stringStream = roles.stream().filter(Objects::nonNull)
.map(s -> s.getAuthority().toString());
String s1 = stringStream.toString();
响应 DTO:
public class DTO {
private String role;
}
但我得到的回应是:
{
"role": "java.util.stream.ReferencePipeline@7d499cdc",
}
我想要 return 类似的东西:
{
"role": [
ROLE_ADMIN, ROLE_CLIENT
]
}
如何以这种方式打印响应?
尝试使用对象映射器的函数writeValueAsString
。理想情况下,这应该可以解决您的问题。 toString()
这里帮不了你。
ObjectMapper ob = new ObjectMapper();
ob.writeValueAsString(roles.stream().filter(Objects::nonNull)
.map(s -> s.getAuthority().toString()));
类似的内容会对您有所帮助。
要解决您的问题,您可以使用:
String s1 = roles.stream()
.filter(Objects::nonNull)
.map(s -> s.getAuthority().toString())
.collect(Collectors.toList())
.toString();
但我认为你的逻辑不正确,响应 Dto 应该是这样的:
public class DTO {
private Lis<String> role;
// getter, setter and constructor
}
然后你的流应该是:
List<String> authorities = roles.stream()
.filter(Objects::nonNull)
.map(s -> s.getAuthority().toString())
.collect(Collectors.toList());
DTO response = new DTO(authorities);
我有这个枚举结构List<Role>
public enum Role implements GrantedAuthority {
ROLE_ADMIN, ROLE_CLIENT;
public String getAuthority() {
return name();
}
}
我尝试实现这个:
Stream<String> stringStream = roles.stream().filter(Objects::nonNull)
.map(s -> s.getAuthority().toString());
String s1 = stringStream.toString();
响应 DTO:
public class DTO {
private String role;
}
但我得到的回应是:
{
"role": "java.util.stream.ReferencePipeline@7d499cdc",
}
我想要 return 类似的东西:
{
"role": [
ROLE_ADMIN, ROLE_CLIENT
]
}
如何以这种方式打印响应?
尝试使用对象映射器的函数writeValueAsString
。理想情况下,这应该可以解决您的问题。 toString()
这里帮不了你。
ObjectMapper ob = new ObjectMapper();
ob.writeValueAsString(roles.stream().filter(Objects::nonNull)
.map(s -> s.getAuthority().toString()));
类似的内容会对您有所帮助。
要解决您的问题,您可以使用:
String s1 = roles.stream()
.filter(Objects::nonNull)
.map(s -> s.getAuthority().toString())
.collect(Collectors.toList())
.toString();
但我认为你的逻辑不正确,响应 Dto 应该是这样的:
public class DTO {
private Lis<String> role;
// getter, setter and constructor
}
然后你的流应该是:
List<String> authorities = roles.stream()
.filter(Objects::nonNull)
.map(s -> s.getAuthority().toString())
.collect(Collectors.toList());
DTO response = new DTO(authorities);