如何将JSON null反序列化为NullNode而不是Java null?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将JSON null反序列化为NullNode而不是Java null?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1969字,纯文字阅读大概需要3分钟。
内容图文
注:杰克逊2.1.x.
问题很简单但到目前为止我找不到解决方案.我浏览了现有的文档等,但找不到答案.
基类是这样的:
@JsonTypeInfo(use = Id.NAME, include = As.PROPERTY, property = "op")
@JsonSubTypes({
@Type(name = "add", value = AddOperation.class),
@Type(name = "copy", value = CopyOperation.class),
@Type(name = "move", value = MoveOperation.class),
@Type(name = "remove", value = RemoveOperation.class),
@Type(name = "replace", value = ReplaceOperation.class),
@Type(name = "test", value = TestOperation.class)
})
public abstract class JsonPatchOperation
{
/*
* Note: no need for a custom deserializer, Jackson will try and find a
* constructor with a single string argument and use it
*/
protected final JsonPointer path;
protected JsonPatchOperation(final JsonPointer path)
{
this.path = path;
}
public abstract JsonNode apply(final JsonNode node)
throws JsonPatchException;
@Override
public String toString()
{
return "path = \"" + path + '"';
}
}
有问题的课是这样的:
public abstract class PathValueOperation
extends JsonPatchOperation
{
protected final JsonNode value;
protected PathValueOperation(final JsonPointer path, final JsonNode value)
{
super(path);
this.value = value.deepCopy();
}
@Override
public String toString()
{
return super.toString() + ", value = " + value;
}
}
当我尝试反序列化时:
{ "op": "add", "path": "/x", "value": null }
我希望将null值反序列化为NullNode,而不是Java null.到目前为止我找不到办法.
你是如何实现这一目标的?
(注意:具体类的所有构造函数都是@JsonCreators,带有相应的@JsonProperty注释 – 它们没有问题,我唯一的问题是JSON null处理)
解决方法:
好吧,我没有阅读足够的文档,事实上它非常简单.
JsonDeserializer有一个JsonNodeDeserializer实现,你可以扩展它.而JsonDeserializer有a.getNullValue() method.
因此,定制的反序列化程序是有序的:
public final class JsonNullAwareDeserializer
extends JsonNodeDeserializer
{
@Override
public JsonNode getNullValue()
{
return NullNode.getInstance();
}
}
并且,在有问题的课程中:
@JsonDeserialize(using = JsonNullAwareDeserializer.class)
protected final JsonNode value;
内容总结
以上是互联网集市为您收集整理的如何将JSON null反序列化为NullNode而不是Java null?全部内容,希望文章能够帮你解决如何将JSON null反序列化为NullNode而不是Java null?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。