让Jackson将Json对象解析为原始String

瑞安

对于熟悉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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章