有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将Json对象解析为基本字符串

对于熟悉建筑API的人来说,这是一个简单的问题。。。为了简单起见,我喜欢将许多对象表示为字符串而不是Json对象

例如,我有一个日期范围,我可以(并且曾经)将它放入一个对象中(具有开始-结束日期成员),但是考虑到我们可以有多个这样的范围,我可以改为使用这个

['20130210-20130315','20130520-20130524']

在国际海事组织看来,它比

[
  {
    "start":"2013-02-10",
    "end":"2013-03-15"
   },
  {
    "start":"2013-05-20",
    "end":"2013-05-24"
  }
]

这适用于服务的主Json对象中的各种其他对象

我的困境是,如果把它们当作字符串处理,那么我就失去了用接口标记它们的能力,而接口在整个代码中都被使用。(例如,这个Json特别可能被标记为一个“过滤器”接口,许多方法都会使用这个接口。)

也就是说,有没有办法同时满足这两个条件,即拥有一个自定义Json对象(实现我自己的接口等),并让Jackson像字符串原语一样解析它?我希望这可以在不涉及定制序列化的大量工作的情况下完成;反序列化,因为我有很多对象


共 (1) 个答案

  1. # 1 楼答案

    讨厌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"]