如何在这种情况下使用@JsonProperty - 与lombok的jackson API

问题描述:

我知道如何在jackson API中使用@JsonProperty,但下面的情况是不同的。如何在这种情况下使用@JsonProperty - 与lombok的jackson API

我在下面的json片段。

{"results":[{"uniqueCount":395} 

所以,用jackson API上面的JSON解析,我已经写了下面的Java POJO类。

package com.jl.models; 

import lombok.Data; 

@Data 
public class Results 
{ 
    private int uniqueCount; 

} 

后来,我得解析下面类似的json片段。现在

{"results":[{"count":60} 

,这里的问题是,我不能,因为它需要一个字符串uniqueCount解析此JSON与Results类。

我可以很容易地创建另一个具有count成员变量的Java POJO类,但我必须创建所有具有Results类的实例的父类Java类。

那么,有没有什么办法可以自定义其lombok行为Results课,而不会影响互相解析这两个JSON?

感谢您的帮助提前。

+0

可以摆脱Results'的'并且只使用一个'名单' ,那么只有'{“结果”:[395]}“就够了,不是吗? –

+0

好的..谢谢你的建议。在前端大量使用'results'对象来解析json。现在,我必须在所有地点重写。有没有一种方法可以通过在生成json的同时附加结果来做到这一点,以避免在前端进行更改? – harshavmb

+0

你可以有'count'字段的另一个'Results2'类,并且在反序列化时使用这些类中的任何一个,然后如果获得第二个类型则映射到原始的'Results'。虽然我更喜欢你使用我的原始建议,因为'uniqueCount'字段没有给你的结构添加任何东西,但是看起来麻烦。或者这 - > http://*.com/a/19566131/3641067(看起来可怕的IMO) –

您可以使用杰克逊的@JsonAnySetter注释指示所有未知的关键方法之一,有你能做的分配自己:

@Data 
public class Results 
{ 
    private int uniqueCount; 

    // all unknown properties will go here 
    @JsonAnySetter 
    public void setUnknownProperty(String key, Object value) { 
     if (key.equals("count")) { 
      uniqueCount = (Integer)value; 
     } 
    } 
}