我有一个具有多个自定义属性的枚举。我能够序列化它,我创建了一个反序列化它的方法,但它不起作用:
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.JsonNode;
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum SomeEnum {
SOME_VALUE("Blah blah blah", "Example description");
private final String displayName;
private final String description;
ScheduleOptimizationRuleCode(String displayName, String description) {
this.displayName = displayName;
this.description = description;
}
public String getCode() { return this.name(); }
public String getDisplayName() {
return displayName;
}
public String getDescription() {
return description;
}
@JsonCreator
public static SomeEnum fromString(@JsonProperty("code") String value) {
return SomeEnum.valueOf(value);
}
}
序列化时,我得到以下(正确的)输出:
{
"code": "SOME_VALUE",
"displayName": "Blah blah blah",
"description": "Example description"
}
当反序列化时,我的理解是Jackson会查看我的JSON字符串的对象表示,找出属性,并将代码作为字符串传递给带注释的方法[code>fromString(),但它不起作用<代码>值始终为空。
我还尝试在@JsonCreator
注释上配置“模式”(例如PROPERTIES
、DELEGATING
),但它不起作用。我看到的所有示例都只有一个值,所以不存在这个问题。
我知道我可以手动滚动一个JsonDeserializer并将其连接起来...在杰克逊博士中,但这肯定不是那么复杂,我需要一个手工制作的反序列化器...
如何反序列化具有多个属性的枚举?
终于找到了一个反序列化枚举的示例,尽管这两个示例中只有一个有效。从查看他的枚举中,我看到他正在传递一个JsonNode
。像魅力一样工作!
@JsonCreator
public static SomeEnum fromString(JsonNode json) {
return SomeEnum.valueOf(json.get("code").asText());
}
问题内容: 我正在尝试并且未能对Jackson 2.5.4的枚举进行反序列化,并且我不太清楚我的情况。我的输入字符串是驼峰式的,我想简单地映射到标准的Enum约定。 我也尝试了吸气剂,但没有成功,这是我在其他地方看到的一种选择。他们都炸毁了: 我究竟做错了什么? 问题答案: 编辑: 从Jackson 2.6开始,您可以在枚举的每个元素上使用以指定其序列化/反序列化值(请参见此处): (此答案的其余
我正在尝试使用jackson-DataBind Objectmapper反序列化一个JSON字符串,其中包含一组枚举属性。当JSON中出现未在枚举中定义的未知属性时,就会发生这种情况。请在下面找到我正在使用的对象映射器配置。 但是,反序列化(ObjectMapper.ReadValue(jsonText,.class);)抛出此错误。“test”是要反序列化的JSON字符串中的未知属性。 Com.
问题内容: 我正在使用JAVA 1.6和Jackson 1.9.9我有一个枚举 我添加了一个@JsonValue,这似乎可以将对象序列化为: 但是当我尝试反序列化时,我得到了 我在这里想念什么? 问题答案: 如果你希望将枚举类与其JSON表示完全脱钩,则@xbakesx指出的序列化器/反序列化器解决方案是一个很好的解决方案。 另外,如果你喜欢一个独立的解决方案,则基于·和·注释的实现会更方便。 因
我有一个具有名称字段的界面,如下所示: 然后我会得到HTTP 400错误请求错误代码,其中包含以下异常日志: 抽象类型只能用附加类型信息实例化 模块的层次结构是模块B依赖于模块a。我尝试使用@JsonTypeInfo,但模块之间的依赖关系是一个限制,不允许我在@JsonSubtypes注释中为类C中的字段f使用BField.class。
我使用的是JAVA 1.6和Jackson 1.9.9我有一个枚举 我添加了一个@jsonValue,这似乎完成了它将对象序列化为:
我需要序列化/反序列化特定枚举: 我有个例外: 我如何通过GSON序列化/反序列化它?