使用Jackson将JSON响应反序列化为DTO。
[ {
foo : "bar",
value : "hello world"
},
{
foo : "bar",
value : "hello world"
},
{
foo : "bar",
value : "hello world"
},
{
foo : "bar",
} ]
使用Gson或Jackson反序列化JSON时忽略空字段
他们仍然从那个不规则的JSON对象创建一个对象。
这意味着我需要遍历这个列表,并通过实现一个清理方法删除所有不具有属性“value”的对象。
If this JSON object has all the required fields
Then create a new DTO
Else
Skip to next JSON object in response
我的带有Jackson注释的DTO:
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public final class FooDTO {
private final String foo;
private final String value;
/**
* Constructor
*
* @param foo String
* @param value String
*/
@JsonCreator
public FooDTO(@JsonProperty("foo") final String foo, @JsonProperty("value") final String value) {
this.foo = checkNotNull(foo, "foo required");
this.value = value;
}
@JsonProperty("foo")
public void setFoo(final String foo) {
this.foo = foo;
}
/**
* @return String
*/
public String foo() {
return foo;
}
etc...
给定JSON响应的结果是初始化了3个DTOs,而不是4个。
也许下面这个类上的注释可能会有所帮助?
@JsonIgnoreProperties(ignoreUnknown
假设我有这样的json,我想将其反序列化为一个名为SubscriberProfile的对象。 当我使用以下代码时,它可以正常工作, 但如果json中缺少字段2,我希望objectmapper抛出和异常(可能缺少字段1和字段2)。 所以这样的json应该抛出一个异常 我曾尝试使用注释,但仅在序列化它时有效。 你知道我该怎么解决这个问题吗? 提前感谢
我目前正在努力反序列化JSON数据结构,如下所示: 示例1: 示例 2: 我必须处理许多此类结构的实例。它是规则生成器的输出。我无法更改JSON的格式,我必须使用我得到的东西。该结构是递归的,可以有多个级别。 我正在使用Jackson的ObjectMapper并构建一些内部类来映射数据。 大多数实例看起来像示例1,对于那些已经很好地工作的实例,但是有一些更复杂的实例,比如示例2,实际上比示例2更复
我有这样一门课: 我知道基于typeToClassId的对象obj是什么类型,不幸的是只有在运行时才知道。 我想基于typeToClassId解析出obj——这里最好的方法是什么?注释似乎已经过时了,基于ObjectMapper的东西似乎是对的,但我很难弄清楚最好的方法可能是什么。 类似于类clazz=lookUpClassBasedOnId(typeToClassId)objectMapper的
我成功地将Jackson配置为序列化一个类,而不在类内部的私有字段上使用任何getter或注释 但我无法使这个非静态类的JSON字符串反序列化为一个没有任何参数化构造函数或设置器的对象。这是不是可能的--我想应该通过思考,但我不知道具体是怎么... 这里有两个测试,需要通过,以达到我的需要:
我目前正在开发一个Java web应用程序,它使用Magento REST API公开的JSON数据。api返回的数据示例如下: 我的应用程序中有一个Java类,如下所示: 我想对数据进行反序列化,并将其转换为,但我总是得到以下错误: 这是我用来将JSON响应反序列化为ArrayList的语句行: 有人能分享一些见解吗?我看到一些例子,返回的JSON对象前面没有任何ID。那是因为我做错了什么吗?非
我将JSON用于我的RESTful服务,并且我有JSON(作为有效负载载体格式)。 我在接口上使用。类实现。扩展 非常感谢任何帮助。