您好,可以在Java中更改枚举的名称吗?例如,我有一个枚举-
public enum CloudType {
AZURE, OPENSTACK
}
还有一个班-
public class Env{
private CloudType cloudType;
}
在杰克逊解析期间,如果我给 -
{
"cloudType":"AZURE"
}
或者
{
"cloudType":"azure"
}
它会给我一个带有cloudType=AZURE
的Env
对象?
有一个线程(杰克逊数据库枚举不区分大小写),但我们真的需要做这么多吗?或者
@XmlEnumValue("azure")
AZURE("azure"),
够了吗?
您可以将枚举
实例的 Java 名称与其 JSON 表示形式分离。
您应该将@JsonValue
-annotated方法添加到您的枚举CloudType
中,以告诉Jackson在读取/写入JSON时使用哪个值。为此,您还需要一个构造函数来初始化此值。
这样地:
public enum CloudType {
AZURE("azure"),
OPENSTACK("openstack");
private final String value;
private CloudType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
}
然后Jackson会序列化< code>CloudType。AZURE转换为< code >“AZURE”,< br >并将< code >“AZURE”反序列化为< code>CloudType。AZURE。
我需要序列化/反序列化特定枚举: 我有个例外: 我如何通过GSON序列化/反序列化它?
如何用gson 2.2.4序列化和反序列化像这样的简单枚举?
问题内容: 我正在尝试并且未能对Jackson 2.5.4的枚举进行反序列化,并且我不太清楚我的情况。我的输入字符串是驼峰式的,我想简单地映射到标准的Enum约定。 我也尝试了吸气剂,但没有成功,这是我在其他地方看到的一种选择。他们都炸毁了: 我究竟做错了什么? 问题答案: 编辑: 从Jackson 2.6开始,您可以在枚举的每个元素上使用以指定其序列化/反序列化值(请参见此处): (此答案的其余
我正在尝试使用jackson-DataBind Objectmapper反序列化一个JSON字符串,其中包含一组枚举属性。当JSON中出现未在枚举中定义的未知属性时,就会发生这种情况。请在下面找到我正在使用的对象映射器配置。 但是,反序列化(ObjectMapper.ReadValue(jsonText,.class);)抛出此错误。“test”是要反序列化的JSON字符串中的未知属性。 Com.
问题内容: 我如何使用gson 2.2.4序列化和反序列化一个简单的枚举? 问题答案: 根据 GsonAPI文档 ,Gson提供了的默认序列化/反序列化,因此基本上,应使用标准和方法(与其他类型一样)对序列化和反序列化。
问题内容: 我正在使用JAVA 1.6和Jackson 1.9.9我有一个枚举 我添加了一个@JsonValue,这似乎可以将对象序列化为: 但是当我尝试反序列化时,我得到了 我在这里想念什么? 问题答案: 如果你希望将枚举类与其JSON表示完全脱钩,则@xbakesx指出的序列化器/反序列化器解决方案是一个很好的解决方案。 另外,如果你喜欢一个独立的解决方案,则基于·和·注释的实现会更方便。 因