我有一个要反序列化为Java的类。类属性之一是本身是可序列化的类,它具有一个原始(字符串)参数,并且实际上表示别名的字符串,即,带有一些额外内容的字符串,以确保其格式正确。这在各种应用程序(例如标识符)中很有用,在这种情况下,它是Cron字符串,必须具有特定的表示形式。所以我有
class ScheduleConfigurations {
private Cron cron;
private Set<Cron> overrides;
// other attributes, getters/setters, constructor
}
class Cron {
private String cronString;
private void validate() { // validates string has correct representation }
// getters, setters, constructor
}
显然,标准的杰克逊解串器期望使用JSON格式,>
{ "cron": { "cronString": "someCronString", "overrides": [ { "cronString": "someCronString1" }, { "cronString": "someCronString2" } ] }
但是,
Cron
类显然只是一个别名字符串。我希望以上代码被序列化/反序列化为>{ "cron": "someCronString", "overrides": ["someCronString1", "someCronString2"] }
我可以使用带有一堆样板的自定义序列化程序来实现这一点,但是我正在寻找一种优雅的方式对杰克逊说:“嘿,该类具有一个String属性,只需将其传递并将其序列化表示作为其唯一属性”。
我有一个要反序列化为Java的类。类属性之一本身就是一个可序列化的类,它具有一个原始(字符串)参数,并且实际上表示一个别名...
@JsonSerialize(using = ToStringSerializer.class)
class Cron {
private String cronString;
public Cron(String cronString) { // Called by Jackson when deserializing from JSON string
this.cronString = cronString;
}
@Override
public String toString() { // Called by Jackson when serializing to JSON
return this.cronString;
}
}