[英]Passing MIssingNode to ObjectMapper to convert to POJO
我正在將“根” JsonNode的子節點轉換為POJO。 如果POJO在JSON中不存在,則拋出MismatchedInputException
。
JsonNode pojoJson = rootJson.path("pojoName");
Pojo[] pojoArray = mapper.treeToValue(pojoJson, Pojo[].class);
我想知道是否有更優雅的方式來處理此異常,而不是每次我想將JsonNode轉換為POJO時都要與has()
進行檢查?
您可以if (pojoJson != null && pojoJson.getNodeType() == JsonNodeType.ARRAY)
檢查節點類型: if (pojoJson != null && pojoJson.getNodeType() == JsonNodeType.ARRAY)
或更簡單的if (pojoJson != null && pojoJson.isArray())
。
好吧,沒有辦法做到“清除”。 Jackson沒有諸如rootJson.path("pojoName", *defaultValue*)
或mapper.treeToValue(pojoJson, Pojo[].class, *defaultValue*)
。 但是您有幾種選擇。
空的ObjectNode
和ArrayNode
將與那里的方法一起返回。 將返回空數組,並且不會引發MismatchedInputException
。
但:
with*
方法不僅返回*Node
。 如果不存在屬性,那么將創建一個新節點並將其添加到您的rootJson
。 withArray
。 2)使用isMissingNode來檢測丟失的節點。
如果不存在屬性,則path
方法將返回特殊的MissingNode 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.