我有一个JSON字符串,将标记为""
而不是[]
。因此,例如,如果我有一个没有子对象的对象,我将收到类似以下的字符串:
{"id":13, "children":""}
我想将其反序列化为Parent类,并将子级正确设置为一个空的子级列表。
public class Parent {
private Long id;
private List<Child> children;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public List<Child> getChildren() {
return children;
}
public void setChildren(List<Child> children) {
this.children = children;
}
}
对于上述JSON字符串,我想要一个对象,其id
设置为13
,而children
设置为。new ArrayList<Child>()
Parent
id <- 13
children <- new ArrayList<Child>()
我会知道如何在整个课堂上使用注释
@JsonDeserialize(using = ParentDeserializer.class)
public class Parent {
...
}
然后
public class ParentDeserializer extends JsonDeserializer<Parent> {
public Parent deserialize(JsonParser parser, DeserializationContext context) {
...
}
}
但是,我想解决一个从""
字符串正确实例化List的一般问题:
public class Parent {
...
// Can I get something like this?
@JsonDeserialize(using = EmptyArrayDeserializer<Child>.class)
public void setChildren(List<Child> children) {
this.children = children;
}
}
我能得到类似的东西吗?
几个选择;首先,您要启用`ACCEPT_EMPTY_STRING_AS_NULL_OBJECT’:
mapper.enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT);
so that empty String becomes null. And if you want it to get converted to
actual empty List, override setter:
public void setChildren(List<Child> c) {
if (c == null) {
children = Collections.emptyList();
} else {
chidlren = c;
}
}
我正在调用一个返回JSON的endpoint,它看起来像这样(在Postman中): 此请求返回的Content-Type头是(与通常的 类来自外部库(编写这个endpoint的人)。无论如何,当我试图通过< code > rest template . exchange()调用这个endpoint时,Jackson都无法将这个JSON反序列化为一个有效的< code>Result类。我正在这样做
问题内容: 我正在创建具有嵌套列表的API。杰克逊似乎是创建对象的好工具,但我还不太清楚如何嵌套列表,我想知道它是否可能。 我的对象看起来像这样。 我希望有一种将其映射到看起来像这样的json的方法: 我们希望能够做到这一点,因此我们可以将属性添加到列表中。 问题答案: 您可以为编写自定义解串器。请参见以下示例: 现在,您必须通知Jackson将其用于您的财产。您可以通过以下方式执行此操作:
我明白它无法从嵌套JSON反序列化字符串。我解决这个问题的一个方法是通过编写自定义映射器 但是只要pojo中有变化,这就需要修改映射器,添加/删除字段。Mixin工作时没有任何变化,我该如何更新我的Mixin来处理objectId呢?
我想用scala中的jackson反序列化json json_结构: {“type”:“struct”,“fields”:[{“name”:“code_role”,“type”:“string”,“nullable”:true,“metadata”:{“HIVE_type_string”:“string”},{“name”:“libelle_role”,“type”:“string”,“nulla
问题内容: 我有一个这样的模型: 例如,我从远程获取以下JSON: 当我反序列化此JSON时,and 变量将获得正确的值。但是,我不想解释变量的内容。相反,我希望它是以下字符串: 之后,我将自己解释。我如何获得这个值? 问题答案: Jackson问题596是为原始问题中描述的所需功能而创建的。如果要实施,请投票。 当前可用的解决方案是实现自定义反序列化处理。
问题内容: 我的问题很简单:我有以下简单的类: 我正在尝试处理以下JSON: 显然,这里存在一个问题(“ blah”无法解析为int) 以前,Jackson抛出类似org.codehaus.jackson.map.JsonMappingException的内容:无法从字符串值’blah’构造java.lang.Integer的实例:不是有效的Integer值 我同意这一点,但是我想在某个地方注册一