使用Spring和Jackson JSON将java.io.Serializable实例序列化为JSON
我从一些内部API获取Serializable
的实例。 Serializable
实例实际上是Long
或String
等。有没有办法制作可以处理这种情况的DTO? 使用private Serializable value;
JSON以value: {}
。
UPDATE
以下是相关代码的简化示例:
@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; } }
更新2
我在这里找到了我的问题的答案: https : //stackoverflow.com/a/20494813/341065
请注意,Jackson不会将java.io.Serializable
用于任何事情:添加它没有实际价值。 它被忽略了。
鉴于此,jackson将看到值等同于任何实际类型(对于序列化,即编写JSON); 或者,在阅读时,相当于java.lang.Object
。
如果您知道实际类型,则可以使用@JsonDeserialize(as=ActualType.class)
注释属性以提供提示。 但是如果实际值是String
s和Long
s,那么实际上不需要这样做。