0
我有一个EntityId
类作为一个简单的包装类到数据库标识符。该类已经具有用于转换为和从字符串表示形式转换的方法。我想在我的JSON网络资源中使用EntityId
的字符串表示形式。杰克逊最简单的自定义序列化?
在杰克逊这个简单类型实现自定义序列化最简单的是什么?我知道我可以编写一个自定义序列化器和解串器,但我想知道是否有更简单的解决方案。
谢谢!
我有一个EntityId
类作为一个简单的包装类到数据库标识符。该类已经具有用于转换为和从字符串表示形式转换的方法。我想在我的JSON网络资源中使用EntityId
的字符串表示形式。杰克逊最简单的自定义序列化?
在杰克逊这个简单类型实现自定义序列化最简单的是什么?我知道我可以编写一个自定义序列化器和解串器,但我想知道是否有更简单的解决方案。
谢谢!
如果有序列类型为字符串的方法,你可以添加@JsonValue
注释,像这样:
public class MyClass {
@JsonValue public String toString() { return "xxx"; }
}
反之,如果是单参数的构造函数,需要一个String
,int
或long
(或者一些杰克逊可以从JSON标量类型转换为Java类型),你可以添加旁边标注@JsonCreator
向构造:
public class MyClass {
@JsonCreator
public MyClass(OtherPojo value) { // or use 'Map<String,Object>', extract data
// ...
}
}
是的,应该这样做。非常感谢! – HolySamosa
还有一点 - “@ JsonValue”适用于任何杰克逊可序列化的返回类型,而不仅仅是字符串。 – StaxMan