对于熟悉API的人员来说,这是一个简单的问题/问题...为了简化起见,我有很多对象更喜欢表示为字符串而不是Json对象。
例如,我有一个日期范围,我可以(过去)将其放置在一个对象中(带有开始,结束日期成员),但是考虑到我们可以有多个这些范围,我可以改用这个日期范围。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
['20130210-20130315','20130520-20130524']
哪个IMO比看起来更简单,更干净
[
{
"start":"2013-02-10",
"end":"2013-03-15"
},
{
"start":"2013-05-20",
"end":"2013-05-24"
}
]
这适用于服务的主要Json对象中的各种其他对象。
我仅将它们视为字符串的困境是,然后我失去了用接口标记它们的能力,这些接口在整个代码中都使用。(例如,特别是此Json可能标记有“过滤器”接口,许多方法都将其引入。)
也就是说,有没有办法同时满足这两个条件,即拥有一个自定义的Json对象(实现我自己的接口等),并使Jackson像String原语一样对其进行解析?我希望不需要很多涉及自定义序列化和反序列化的工作就可以实现,因为我有很多对象。
讨厌复制帖子,因此尝试在此处添加一些值-这恰好满足了我对数组的要求-
public class MyAwesomeJson extends JacksonObject implements S {
private final String value;
public MyAwesomeJson(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
}
然后得到数组形式
public class MyAwesomeJsonArray extends JacksonObject implements A {
private final Set<MyAwesomeJson> values = Sets.newLinkedHashSet();
public MyAwesomeJsonArray(MyAwesomeJson... values) {
this.values.addAll(Arrays.asList(values));
}
@JsonValue
public Set<MyAwesomeJson> getValues() {
return values;
}
}
System.out.println(new MyAwesomeJsonArray(new MyAwesomeJson("Yellow"), new MyAwesomeJson("Goodbye")));
["Yellow","Goodbye"]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句