[英]How to check if a JsonNode is a single element or an Array in Java?
[英]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.