熟悉构建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对象(实现我自己的接口等)并让杰克逊解析它像一个字符串原语?我希望这可以在没有太多涉及自定义序列化的工作的情况下完成。反序列化,因为我有很多对象。
答案 0 :(得分:0)
讨厌duplicating帖子,所以试图在这里添加一些值 - 这正是我想要的数组 -
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"]