泽西岛2(Jackson)序列化问题

时间:2018-07-04 06:05:19

标签: jersey-2.0 weblogic12c jackson2

工具:

Weblogic 12c

Jersey 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。

有人可以在这里帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果要确保orderStatus是名称,请使用特定的JsonProperty

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

@JsonProperty(还指示要包含属性)用于指示外部属性名称