使用Spring和Jackson JSON将java.io.Serializable实例序列化为JSON

wil*_*ilx 1 java rest spring json jackson

我正在获取Serializable一些内部API 的实例。该Serializable实例其实Long还是String等有没有一种方法,使DTO,可以处理这种情况呢?使用private Serializable value;JSON的结尾为value: {}

更新

这是所讨论的代码的简化示例:

@Controller
public class SomeController
{
  //...
  public MyDto getInfo(Long id)
  {
    MyDto result = new MyDto();
    Serializable obj = svc.getInfo(id);
    // obj is either Long, or String, or one of few more fundamental Java types
    result.setValue(obj);
    return result;
  }
}

public class MyDto
{
  private Serializable value;
  public void setValue(Serializable info)
  {
    this.value = value;
  }
  public Serializable getValue()
  {
    return value;
  }
}
Run Code Online (Sandbox Code Playgroud)

更新2

我在这里找到了解决我问题的方法:https : //stackoverflow.com/a/20494813/341065

Sta*_*Man 5

请注意,杰克逊没有任何用处java.io.Serializable:添加它没有真正的价值。它被忽略。

鉴于此,Jackson将看到与实际类型等效的值(用于序列化,即编写JSON);或者,当阅读时,等同于java.lang.Object

如果您知道实际的类型,则可以用注释属性@JsonDeserialize(as=ActualType.class)。但是,如果实际值为Strings和Longs,则实际上不需要。