【问题标题】:Jersey 2 with Jackson serialisation issue带有杰克逊序列化问题的 Jersey 2
【发布时间】:2018-12-12 11:42:45
【问题描述】:

工具:

Weblogic 12c

球衣 2.21.1

杰克逊 2

public class Profile implements Serializable
{

    private List<Status> orderStatus;

    public void setOrderStatus(List<Status> orderStatus)
    {
        this.orderStatus = orderStatus;
    }

    public void getOrderStatus()
    {
        return orderStatus;
    }

我有一个如上所述的简单 POJO 类。 我在使用Jersey 2 with Jackson 时面临以下问题。

1) 当 Profile 类被序列化时,JSON 被创建为:{"OrderStatus":[{}]}

2)所以生成的密钥是OrderStatus 而不是orderStatus

3) 当这个 JSON 被反序列化时,它会抛出错误 -

Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "OrderStatus" since it cannot 
find field with OrderStatus but has field as orderStatus

I have tried adding : 

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY,getterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)

希望序列化只使用字段作为键(不会使用属性),生成JSON为{"orderStatus":[{}]} .

但是它不工作并且抛出同样的错误。 有什么方法可以将 POJO 序列化为字段而不是属性。

有人可以帮忙吗?

【问题讨论】:

    标签: jersey-2.0 weblogic12c jackson2


    【解决方案1】:

    如果您想确保 orderStatus 是使用特定 JsonProperty 的名称:

     @JsonProperty("orderStatus")
     public void getOrderStatus()
    

    @JsonProperty(也表示要包含的属性)用于表示外部属性名

    【讨论】:

    • 所以Jackson 只会使用getter 方法来序列化而不使用字段?
    • @Atul Jackson 将为该字段找到 JsonProperty 并将其值用于外部化该字段
    猜你喜欢
    • 2020-12-24
    • 1970-01-01
    • 2014-12-18
    • 2016-04-18
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    相关资源
    最近更新 更多