簡體   English   中英

如何檢查 JsonNode 是否有數組 - Java, SpringBoot

[英]How to check if JsonNode has array - Java, SpringBoot

我有 JSON,我需要迭代槽,如果 JSON 有帶有鍵“sibling”的列表,則迭代槽將這些值添加到新列表,如果 JSON 沒有帶有鍵“sibling”的列表,則不做任何事情

private List<SiblingsGameDataResponse> extractSiblingList(JsonNode node) {
        JsonNode siblings = node.get("siblings");
        ArrayNode siblingsArrayNode = objectMapper.createArrayNode();
        List<SiblingsGameDataResponse> siblingList = new ArrayList<>();
        if (siblings.isArray()) {
            siblingsArrayNode = (ArrayNode)siblings;
            for (Iterator<JsonNode> i = siblingsArrayNode.iterator(); i.hasNext(); ) {
                siblingList.add(new SiblingsGameDataResponse(asString(i.next(), "gameId")));
            }
            return siblingList;
        }
        return Collections.emptyList();
    }

我的代碼部分制動

if (siblings.isArray()

當我在 JSON 中沒有帶有鍵“兄弟”的列表時,它會給我NullPOinterException

如果您的 json 是

{
  "siblings": null
   ...
}

將返回一個NullNode object

如果存在其他 json 鍵但“兄弟姐妹”鍵不存在

{  
    "name": "someName"
     ...
}

然后JsonNode siblings = node.get("siblings"); 將返回null ,因為它沒有找到任何具有該鍵的節點。

所以首先檢查這個節點是否存在,然后再檢查它是否是一個數組

if (siblings.= null &&.siblings.isNull() && siblings.isArray()){.....}

siblings.isNull()將檢查返回的 object 是否是 NullNode

另一種方法是在讀取兄弟姐妹之前有效地使用hasNonNull(String fieldName)方法。 這將確保可以讀取非 null 值,並且還可以讀取非 NullNode。

if (node.hasNonNull("siblings")){
   JsonNode siblings = node.get("siblings");
     if (siblings.isArray()) {
       ....
      }
}

另外根據您的問題,您可能有錯字

當我在 JSON 中沒有帶有鍵“兄弟”的列表時,它會給我 NullPOinterException

你需要兄弟姐妹鑰匙而不是兄弟姐妹

暫無
暫無

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

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