- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
注意:Jackson 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。到目前为止,我找不到办法。
你是如何实现的?
(注意:具体类的所有构造函数都是带有适当的 @JsonProperty
注释的 @JsonCreator
——它们可以正常工作,我唯一的问题是 JSON 空值处理)
最佳答案
好的,好吧,我没有看够文档,其实很简单。
有一个JsonNodeDeserializer JsonDeserializer
的实现,您可以对其进行扩展。 JsonDeserializer
有一个 .getNullValue() method .
因此,定制反序列化器是有序的:
public final class JsonNullAwareDeserializer
extends JsonNodeDeserializer
{
@Override
public JsonNode getNullValue()
{
return NullNode.getInstance();
}
}
并且,在有问题的类中:
@JsonDeserialize(using = JsonNullAwareDeserializer.class)
protected final JsonNode value;
关于java - 如何将 JSON null 反序列化为 NullNode 而不是 Java null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15293697/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!