我使用Jackson Json Mapper來解析我的服務器上的查詢。Jackson Json Mapper:無字段或空字段?
例如,我在等待查詢其適合My_class
類:
class My_class {
String a;
String b;
}
我反序列化查詢,這種方式:
public <T> T Deserialize(String json, Class<T> type) throws DeserializationException {
if (json == null || type == null) {
throw new IllegalArgumentException();
}
try {
return objectMapper.readValue(json, type);
} catch (JsonParseException e) {
throw new DeserializationException(e);
} catch (org.codehaus.jackson.map.JsonMappingException e) {
throw new DeserializationException(e);
} catch (IOException e) {
throw new DeserializationException(e);
}
}
這裏有兩個例子查詢:
{"a":"test"}
{"a":"test", "b":null}
問題是我想知道用戶只給我一個查詢字段a
,當他發送一個查詢字段b
設置爲null
。在兩種情況下,映射器將字段b
標記爲null
。
什麼是更好的方法來做到這一點(並避免編寫我自己的解串器)?
這兩種情況有什麼區別? – 2013-09-16 12:45:41
在這兩種情況下,你會期望傑克遜如何映射'b'的值?在Java中,My_class有一個名爲'b'的字段,它只能有一個字符串值或爲空。因此,當B不存在於JSON有效載荷中時,您希望My_class'b'字段具有什麼值?如果JSON有效載荷中的「b」爲空,該怎麼辦? – Kyle