簡體   English   中英

將MIssingNode傳遞給ObjectMapper以轉換為POJO

[英]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*) 但是您有幾種選擇。

1)使用withwithArray代替path

空的ObjectNodeArrayNode將與那里的方法一起返回。 將返回空數組,並且不會引發MismatchedInputException

但:

  • with*方法不僅返回*Node 如果不存在屬性,那么將創建一個新節點並將其添加到您的rootJson
  • 如果將ObjectNode轉換為數組,請使用withArray

2)使用isMissingNode來檢測丟失的節點。

如果不存在屬性,則path方法將返回特殊的MissingNode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM