我有一個我正在使用Jersey客戶端進行反序列化的類。這個類有一個看起來像這樣的方法:如何告訴Jersey客戶端在它反序列化的每個類上執行相同的@JsonIgnoreProperties(ignoreUnknown = true)?
public boolean isEmpty() {
return (code == null &&
label == null &&
codeSystem == null &&
codeSystemLabel == null &&
description == null &&
concept == null &&
alternateCode == null
);
沒有setter。 AS-的是,這將拋出此異常:
com.sun.jersey.api.client.ClientHandlerException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "empty" (Class com.app.models.CodedElementModel), not marked as ignorable
at [Source: [email protected]7d51; line: 1, column: 270] (through reference chain: com.app.models.LabOrderModel["code"]->com.app.models.CodedElementModel["empty"])
I've read this article,而且事實證明我可以把這個註釋的CodedElementModel
類解決這個問題:@JsonIgnoreProperties(ignoreUnknown = true)
。
問題是我有很多方法拋出這個異常。有沒有辦法將澤西客戶端配置爲像每個班級設置@JsonIgnoreProperties(ignoreUnknown = true)
一樣行動,因此我不必親自對它們加註釋?我不想通過手動添加此註釋來更改〜30個文件。如果有人在沒有setter的情況下添加getter,這將防止將來出現這樣的錯誤。
下面是我如何創建我的球衣客戶:
DefaultClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, Boolean.TRUE);
Client client = Client.create(clientConfig);
我覺得這樣的clientConfig
可能有一個設置要做到這一點,但我不知道如何找到它。
其實我也希望它在JSON。這個'空'字段將使用不同語言的人不必像我的模型那樣編寫自己的'isEmpty()'實現。 –
順便提一句,'register'方法在我的'Client'上不存在(也許這是一個球衣2.0的東西?)你知道如何在球衣1.x中設置嗎? –
@tieTYT Yikes,對不起...我沒有看到這是Jersey 1.x.等等,不幸的是稍微複雜一些;編輯 –