JsonNullable是一個在PHP中常用的對象,它總是具有isPresent值為true的特性。這意味著無論JsonNullable物件是否為空,它都被視為存在。 php小編新一將在以下文章中探討JsonNullable物件的用途和特點,並解釋為何它的isPresent值永遠是true。透過深入了解JsonNullable對象,我們可以更好地理解它在PHP開發中的應用和優勢。
我有一個 json 格式的檔案。它儲存我在測試中使用的 json 物件。我使用 objectmapper 將此文件轉換為對象,它轉換得很好,但有一個問題。物件中的所有欄位都有 jsonnullabel 的包裝類型。問題如下 - 所有 jsonnullabel 對象,即使它們包含 null 屬性值 ispresent = true。因此,「orelse」和「ispresent」方法無法正常運作。我得到了 npe。如何確保從字串或 json 檔案轉換時,如果內部存在空值,這些欄位等於「false」?
json 範例:
65蜜蜂5661098c我已經為 objectmapper 嘗試過這個配置: 物件映射器配置:
ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); objectMapper.registerModule(new Jdk8Module()); objectMapper.registerModule(new JsonNullableModule()); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false);
嘗試在類別成員上使用@jsondeserialize jackson 註解,該註解在json 中可以為null ,並且你想要值為“false”而不是null,如下圖:
public class MyJsonClass { @JsonDeserialize(using = CustomDeserializer.class) public String nullableMember; } public class CustomDeserializer extends StdDeserializer<String> { public CustomDeserializer() { this(null); } public CustomDeserializer(Class<?> vc) { super(vc); } @Override public String deserialize(JsonParser jsonparser, DeserializationContext context) { String text = jsonparser.getText(); if (null == text) { text = "false"; } return text; } }
以上是JsonNullable 物件始終具有 isPresent 值 = true的詳細內容。更多資訊請關注PHP中文網其他相關文章!