我想使用 Jackson 流 api 在运行时解析包含枚举的 POJO,如下所示:
Class<Enum<?>> enumClass = field.getType();
JsonParser parser = ...;
String s = parser.getValueAsString();
Enum enum = (Enum)isThereAnyBiFunctionCanGetDynamicEnum(s, enumClass);
我可以混合使用 DataBind 和 Stream API 解决方案,即使用 ObjectReader
获取 Enum
:
ObjectReader reader = ...;
Enum enum = (Enum)reader.readValue(parser, enumClass);
我觉得这可能不是一个好的做法,请有人指导。
谢谢!
最佳答案
您可以尝试使用org.apache.commons.lang3.EnumUtils
类和getEnum方法:
import org.apache.commons.lang3.EnumUtils;
public class EnumApp {
enum Type {
INT,
STRING
}
public static void main(String[] args) {
System.out.println(EnumUtils.getEnum(Type.class, "INT"));
System.out.println(EnumUtils.getEnum(Type.class, "STRING"));
System.out.println(EnumUtils.getEnum(Type.class, "STRING1"));
}
}
上面的代码打印:
INT
STRING
null
但是通过调用 ObjectMapper
API
来使用:
reader.readValue(parser, enumClass);
也还可以,没有什么问题。
关于java - 如何使用 Jackson 流 API 将文本解析为 Enum 在运行时因不同的枚举类而异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59554176/