在反序列化过程中(据我了解,这是将JSON数据转换为Java对象的过程),我如何告诉Jackson,当它读取不包含数据的对象时,应该忽略它吗?
我正在使用Jackson 2.6.6和Spring 4.2.6
我的控制器收到的JSON数据如下:
{
"id": 2,
"description": "A description",
"containedObject": {}
}
问题是对象“ containedObject”按原样解释,并且正在实例化。因此,控制器读取此JSON数据后,它将立即生成ContainedObject对象类型的实例,但我需要将此实例设置为null。
最简单,最快的解决方案是,在接收到的JSON数据中,该值为null,如下所示:
{
"id": 2,
"description": "A description",
"containedObject": null
}
但这是不可能的,因为我无法控制发送给我的JSON数据。
是否存在适用于反序列化过程的注释(如此处所述),可能对我的情况有所帮助?
我留下了我的班级的代表以获取更多信息:
我的实体类如下:
public class Entity {
private long id;
private String description;
private ContainedObject containedObject;
//Contructor, getters and setters omitted
}
我包含的对象类如下:
public class ContainedObject {
private long contObjId;
private String aString;
//Contructor, getters and setters omitted
}
我会用一个JsonDeserializer
。检查相关字段,确定是否为该字段emtpy
并返回null
,因此你ContainedObject
将为null。
这样的东西(semi-pseudo):
public class MyDes extends JsonDeserializer<ContainedObject> {
@Override
public String deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException, JsonProcessingException {
//read the JsonNode and determine if it is empty JSON object
//and if so return null
if (node is empty....) {
return null;
}
return node;
}
}
然后在你的模型中:
public class Entity {
private long id;
private String description;
@JsonDeserialize(using = MyDes.class)
private ContainedObject containedObject;
//Contructor, getters and setters omitted
}
希望这可以帮助!
我的控制器接收到的JSON数据如下: 问题是对象“ContainedObject”被解释为是,并且它正在被实例化。因此,只要我的控制器读取这个JSON数据,它就会生成一个ContainedObject对象类型的实例,但我需要它为空。 最简单、最快的解决方案是,在接收的JSON数据中,该值为空,如下所示: 我的实体类如下: 和包含的对象类,如下所示:
问题内容: 在反序列化过程中(据我了解,这是将JSON数据转换为Java对象的过程),我如何告诉杰克逊,当它读取不包含数据的对象时,应将其忽略吗? 我正在使用Jackson 2.6.6和Spring 4.2.6 我的控制器收到的JSON数据如下: 问题是对象“ containedObject”按原样解释,并且正在实例化。因此,一旦我的控制器读取此JSON数据,它就会生成ContainedObjec
如果字段的值为NULL,如何将jackson配置为在序列化期间忽略该字段的值。 例如:
问题内容: 如果该字段的值为null,如何配置Jackson在序列化期间忽略该字段的值。 例如: 问题答案: 要使用抑制具有空值的序列化属性,可以直接配置或使用批注: 要么: 或者,你可以在中使用,以便在值不为时显示属性。
我读过@JsonInclude这样的问题来忽略空值。这适用于实体中的常规字段,但不适用于集合。如果实体中的集合为空,Json序列化会给出一个空值。 如何对集合进行等效忽略?
问题内容: 我目前正在使用杰克逊2.1.4,并且在将对象转换为JSON字符串时忽略字段时遇到了一些麻烦。 这是我的类,它充当要转换的对象: 这是我如何转换它: 这是输出: 如何避免这些空值?我只想获取“订阅”目的所需的信息! 这正是我要查找的输出: 我还尝试了@JsonInclude(Include.NON_NULL)并将所有变量都设置为null,但是它也不起作用!感谢您的帮助! 问题答案: 您将