目前,我有以下REST終點閱讀JSON輸入,既可以是可空和可選
@PUT
@Path("/props")
public Response update(Props input) { .. }
和我的輸入參數是:
@XmlAccessorType(XmlAccessType.FIELD)
class Props {
public String prop1;
public String prop2;
}
客戶端發送輸入作爲JSON字符串。我希望這兩個參數都是可以爲空和可選的。例如:如果客戶想不更新PROP1更新PROP2爲空值,它可以發送:
{"prop2":null}
但在這一點上,我看到兩個input.prop1 = null
和input.prop2 = null
。
如何區分客戶端是否發送了一個空值的道具或根本沒有發送道具?
由於Java String只有'null'和not-'null',你如何讓你的代碼區分「未發送」的情況「發送爲空」? – dbreaux
@dbreaux這就是我要求的。我期望這樣的常見問題有某種傳統的解決方案 – Jack
由於Java沒有自然的方式來區分sent-as-null和not-sent,所以我懷疑是否有標準的JAXB/JSON解組行爲。我懷疑任何主要的圖書館都會將這兩種情況解除爲空。 Java中唯一的替代方法是定義爲「省略」的一些特殊字符串。您可能必須使用較低級別的API調用來解析它。 – dbreaux