2012-05-22 36 views
0

我有一个EntityId类作为一个简单的包装类到数据库标识符。该类已经具有用于转换为和从字符串表示形式转换的方法。我想在我的JSON网络资源中使用EntityId的字符串表示形式。杰克逊最简单的自定义序列化?

在杰克逊这个简单类型实现自定义序列化最简单的是什么?我知道我可以编写一个自定义序列化器和解串器,但我想知道是否有更简单的解决方案。

谢谢!

回答

1

如果有序列类型为字符串的方法,你可以添加@JsonValue注释,像这样:

public class MyClass { 
    @JsonValue public String toString() { return "xxx"; } 
} 

反之,如果是单参数的构造函数,需要一个Stringintlong(或者一些杰克逊可以从JSON标量类型转换为Java类型),你可以添加旁边标注@JsonCreator向构造:

public class MyClass { 
    @JsonCreator 
    public MyClass(OtherPojo value) { // or use 'Map<String,Object>', extract data 
     // ... 
    } 
} 
+0

是的,应该这样做。非常感谢! – HolySamosa

+0

还有一点 - “@ JsonValue”适用于任何杰克逊可序列化的返回类型,而不仅仅是字符串。 – StaxMan