JsonNullable ist ein häufig verwendetes Objekt in PHP. Es hat immer die Eigenschaft, dass der isPresent-Wert wahr ist. Das bedeutet, dass ein JsonNullable-Objekt als vorhanden gilt, unabhängig davon, ob es null ist oder nicht. Der PHP-Editor Xinyi wird im folgenden Artikel die Verwendung und Eigenschaften des JsonNullable-Objekts untersuchen und erklären, warum sein isPresent-Wert immer wahr ist. Durch ein tiefes Verständnis des JsonNullable-Objekts können wir seine Anwendung und Vorteile in der PHP-Entwicklung besser verstehen.
Ich habe eine Datei im JSON-Format. Es speichert JSON-Objekte, die ich in meinen Tests verwende. Ich habe Objectmapper verwendet, um diese Datei in Objekte zu konvertieren, und die Konvertierung funktionierte einwandfrei, aber es gibt ein Problem. Alle Felder im Objekt haben den Wrapper-Typ jsonnullabel. Das Problem ist wie folgt: Alle jsonnullabel-Objekte, auch wenn sie einen Null-Attributwert enthalten, sind vorhanden = true. Daher funktionieren die Methoden „orelse“ und „ispresent“ nicht ordnungsgemäß. Ich habe NPE. Wie kann ich sicherstellen, dass diese Felder beim Konvertieren aus einer String- oder JSON-Datei den Wert „false“ haben, wenn darin Nullwerte enthalten sind?
json-Beispiel:
65bee5661098cIch habe diese Konfiguration für Objectmapper ausprobiert: Objekt-Mapper-Konfiguration:
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);
Versuchen Sie, @jsondeserialize jackson-Annotation für Klassenmitglieder zu verwenden, die in JSON nullbar sind, und Sie möchten, dass der Wert „false“ statt null ist, wie folgt:
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; } }
Das obige ist der detaillierte Inhalt vonJsonNullable-Objekte haben immer den isPresent-Wert = true. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!