Java8将对象转换为以值分隔的字符串

bihw5rsg  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(624)

我正在尝试将一个java对象转换为一个由“separator”分隔的字符串。
例子

public class Person{

int id;
String name;
String age;
String sex;
}

主要方法

Person per = new Person(1, "Kevin", "20", "Male");
String objectAsText = per.ConvertObjectToString(per, "|");

预期产量

1|Kevin|20|Male

请注意,java对象不是列表。我还想添加一个验证 ConvertObjectToString 可以避免打印空的对象值。ie公司

Person per = new Person(1, "Kevin", "Male");
String objectAsText = per.ConvertObjectToString(per, "|");

预期产量

1|Kevin|Male

我知道使用tostring方法可以实现这一点,但我想知道是否还有其他有效的方法。另外,如果为null,我不想逐值检查,因为java对象可能很大。

bxpogfeg

bxpogfeg1#

如果您不想检查每个值,我建议将java对象转换为json,比如转换为 Map<String,Object> 然后使用collectors.joining

String value = map.values()
            .stream().filter(Objects::nonNull)
            .map(Object::toString)
            .collect(Collectors.joining("|"));

您可以使用反射包来完成,但是请确保字段是 public ```
Person per = new Person(1, "Kevin", "20", "Male");

String value = Arrays.stream(Person.getClass().getFields())
.map(f-> {
try {
return f.get(per).toString();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}).filter(Objects::nonNull).collect(Collectors.joining("|"));

System.out.println(value); //1|Kevin|20|Male

相关问题