java - 如何使用 Jackson json 注释枚举字段以进行反序列化

我在 Jackson 1.6.2 中使用 REST Web 服务/Apache Wink。如何注释枚举字段以便 Jackson 反序列化它?

内部类

public enum BooleanField
{
    BOOLEAN_TRUE        { public String value() { return "1";} },
    BOOLEAN_FALSE       { public String value() { return "0";} },

Java Bean/请求对象

BooleanField locked;
public BooleanField getLocked() {return locked;}

Jackson 文档声明它可以通过 @JsonValue/@JsonCreator 执行此操作,但没有提供示例。

有谁愿意将 (java) bean 泄露出去?

最佳答案

如果您使用的是 Jackson 1.9,序列化将由以下人员完成:

public enum BooleanField {
   BOOLEAN_TRUE("1")
   ;

   // either add @JsonValue here (if you don't need getter)
   private final String value;

   private BooleanField(String value) { this.value = value; }

   // or here
   @JsonValue public String value() { return value; }

所以你需要的改变是向 Enum 类型本身添加方法,所以所有值都有它。不确定它是否适用于子类型。

对于@JsonCreator,有一个静态工厂方法就可以了;所以添加类似:

@JsonCreator
public static BooleanField forValue(String v) { ... }

Jackson 2.0 实际上只支持对两者都使用 @JsonValue,包括反序列化。

https://stackoverflow.com/questions/9300191/

相关文章:

json - 服务器响应在中途被切断

json - 从动态 json 数据更新力有向图上的链接

json - 可以引用 JSON 数字吗?

javascript - 在 Node.js 下存储 JSON 的简单方法

java - 在java中查询一个JSONObject

c# - Web API 复杂参数属性全部为空

ruby-on-rails - rails : Render Json Status Problem

c# - 反序列化客户端 AJAX JSON 日期

javascript - 脚本5009 : 'JSON' is undefined

json - 如何使用 Elasticsearch 搜索嵌套对象