僅表示該字段在JSON對像中不存在。 另一方面,Anull字段表示該字段,但其值明確設置為null
不存在
// Absent field {"name": "John Doe"} // Null field {"name": "John Doe", "age": null}
>age
>如何區分傑克遜JSON處理中的缺失字段和無效字段? age
<>
JsonNode
: jackson's JsonNode
提供了像has(fieldName)
之類的方法來檢查是否存在字段。如果has(fieldName)
返回false
,則該字段不存在。如果返回true
,則可以使用get(fieldName)
>檢索值。 If get(fieldName)
returns null
, the field is present but has a null value.JsonNode node = objectMapper.readTree(jsonString); if (node.has("age")) { JsonNode ageNode = node.get("age"); if (ageNode.isNull()) { System.out.println("Age field is null"); } else { System.out.println("Age field has a value: " + ageNode.asInt()); //Or appropriate type handling } } else { System.out.println("Age field is absent"); }
0
for integers, false
for booleans, null
對於對象)。 但是,空字段將明確設置為null
>。 這種方法依賴於數據類型的默認值。 請注意,您不能僅使用此方法直接區分缺失的字段和一個字段將其顯式設置為默認值。 @JsonDeserializer
來創建自定義的避難所。這使您可以直接檢查JSON結構並根據特定要求實現自己的邏輯以處理缺乏和無效的領域。 在使用傑克遜序列化和挑戰JSON數據時,處理缺乏和無效的最佳實踐是什麼?處理:
Integer
>對於可能不存在或無效的字段,因為int
>可以保持一個Integer
>值。 null
> @JsonInclude
> @JsonInclude(Include.NON_NULL)
註釋,例如@JsonInclude(Include.NON_ABSENT)
NullPointerExceptions
>>> Optional
NullPointerExceptions
以上是傑克遜場缺席與無效的差異的詳細內容。更多資訊請關注PHP中文網其他相關文章!