


So lösen Sie die Serialisierungs- und Deserialisierungsprobleme von Json in SpringBoot
JSON-Serialisierung/Deserialisierung steuern
1. Die Verwendung von @JsonIgnoreProperties
@JsonIgnoreProperties(value = { "prop1","prop2" })
wird verwendet, um die Pojo-Klasse zu ändern und die angegebenen Attribute während der Serialisierung und Deserialisierung zu ignorieren.
@JsonIgnoreProperties(ignoreUnknown = true)
Wird zum Ändern des Pojo verwendet Klasse, ignoriert Eigenschaften, die während der Deserialisierung nicht festgelegt werden können, einschließlich Eigenschaften, die nicht im Konstruktor festgelegt werden können und über keine entsprechenden Setter-Methoden verfügen Die Eigenschaftsnamen sind inkonsistent. Sie können @JsonProperty verwenden, um die Methode getter () oder setter () zu kommentieren. Diese Annotation legt den Eigenschaftsnamen fest, der json entspricht. Darüber hinaus wird @JsonProperty häufig zum Kommentieren der formalen Parameter des Konstruktors verwendet. In diesem Fall sollte die Annotation „@JsonCreator“ hinzugefügt werden zwei Methoden:
Methode 1: Einen Parameterlosen Konstruktor hinzufügen
Methode 2: Fügen Sie die Annotation @JsonCreator zu diesem parametrisierten Konstruktor hinzu, und die Parameter müssen mit @JsonProperty annotiert werden.
4 Anmerkungen mit @JsonGetter
Wenn der Name des JSON-Felds nicht mit dem Eigenschaftsnamen des Pojo übereinstimmt, können Sie @JsonGetter verwenden, um die getter()-Methode zu kommentieren, und @JsonSetter, um die setter()-Methode zu kommentieren Geben Sie einen Eigenschaftsnamen an. 5. Es werden allgemeine Objekteigenschaftennamen festgelegt, z. B. das Car-Objekt, das benannte Attribute wie Marke/Preis hat Manchmal müssen wir auch einige erweiterte Attribute festlegen. Die Namen dieser erweiterten Attribute werden normalerweise zum Speichern der K/V dieser erweiterten Attribute verwendet muss in die Klasse deserialisiert werden. In Map muss der Klasse eine K/V-Setter-Methode hinzugefügt werden, und diese Setter-Methode muss mit @JsonAnySetter annotiert werden Daten können in die Map deserialisiert werden:
public class Car { public String brand; private Map<String, String> properties; @JsonAnySetter public void add(String key, String value) { properties.put(key, value); } }
Nach dem Login kopieren6 Die @JsonAnyGetter-Annotation
entspricht der @JsonAnySetter-Annotation. Wenn Sie die Map-K/V-Attribute in JSON serialisieren möchten, müssen Sie einen @JsonAnyGetter hinzufügen Methode zur Klasse, die KV direkt zurückgibt. @JsonSerialize- und @JsonDeserialize-Annotationen
@ Die JsonSerialize-Annotation kann eine spezielle Serialisierungsfunktion für Klassenattribute festlegen, und die @JsonDeserialize-Annotation wird verwendet, um die Deserialisierungsfunktion für JSON-Attribute anzupassen
SpringBoot-Serialisierungsregeln
Include .Include.ALWAYS
Das Standardattribut
Include.NON_DEFAULT
ist der Standardwert und wird nicht serialisiert.
Include.NON_EMPTY
Das Attribut ist leer ("") oder NULL und ist nicht serialisiert
Include.NON_NULL
Das Attribut ist NULL und ist nicht serialisiert
1 Globale Einstellungen
{ "brand":"Benz", "attr2":"val2", "attr1":"val1" }
- 2 . Lokale Einstellungen
für die Entitätsklasse oder das Feld, das festgelegt werden muss. Fügen Sie Anmerkungen hinzu
Include.Include.ALWAYS
默认Include.NON_DEFAULT
属性为默认值不序列化Include.NON_EMPTY
属性为 空(“”) 或者为 NULL 都不序列化Include.NON_NULL
3. Passen Sie eine Serialisierungstoolklasse an, die StdSerializerpublic class Car { public String brand; private Map<String, String> properties; @JsonAnyGetter public Map<String, String> getProperties() { return properties; } }
Nach dem Login kopierenimplementieren muss ;
{ "brand":"Benz", "attr2":"val2", "attr1":"val1" }
public class Event {
public String name;
@JsonFormat(
shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss")
public Date eventDate;
}
Nach dem Login kopieren
(3) kann für Entitätsobjektfelder verwendet werden, um NULL-Werte zu verarbeiten oder public class Event { public String name; @JsonFormat( shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy hh:mm:ss") public Date eventDate; }
/** * 〈返回json空值去掉null和""〉 〈功能详细描述〉 * * @author gogym * @version 2017年10月13日 * @see JacksonConfig * @since */ @Configuration public class JacksonConfig { @Bean @Primary @ConditionalOnMissingBean(ObjectMapper.class) public ObjectMapper jacksonObjectMapper(Jackson2ObjectMapperBuilder builder) { ObjectMapper objectMapper = builder.createXmlMapper(false).build(); // 通过该方法对mapper对象进行设置,所有序列化的对象都将按改规则进行系列化 // Include.Include.ALWAYS 默认 // Include.NON_DEFAULT 属性为默认值不序列化 // Include.NON_EMPTY 属性为 空("") 或者为 NULL 都不序列化,则返回的json是没有这个字段的。这样对移动端会更省流量 // Include.NON_NULL 属性为NULL 不序列化,就是为null的字段不参加序列化 //objectMapper.setSerializationInclusion(Include.NON_EMPTY); objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY); return objectMapper; } }
Benutzerdefinierter Nullwert-Serializer
spring.jackson.default-property-inclusion=non_null
spring:
jackson:
default-property-inclusion: non_null
Nach dem Login kopieren
(2)spring.jackson.default-property-inclusion=non_null spring: jackson: default-property-inclusion: non_null
Serializer-Modifikator
@JsonInclude(Include.NON_NULL)
Jackson-Entität konfigurieren
public class ClientObjectSerialize extends JsonSerializer<CreditBorrowerRepaymentRequestDto>{
@Override
public void serialize(CreditBorrowerRepaymentRequestDto dto, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {
jsonGenerator.writeStartObject();
try {
Field[] fields = dto.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if(null == field.get(dto)){
continue;
}
jsonGenerator.writeFieldName(field.getName());
jsonGenerator.writeObject(field.get(dto));
}
} catch (Exception e) {
e.printStackTrace();
}
jsonGenerator.writeEndObject();
}
}
Nach dem Login kopieren
public class ClientObjectSerialize extends JsonSerializer<CreditBorrowerRepaymentRequestDto>{ @Override public void serialize(CreditBorrowerRepaymentRequestDto dto, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { jsonGenerator.writeStartObject(); try { Field[] fields = dto.getClass().getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); if(null == field.get(dto)){ continue; } jsonGenerator.writeFieldName(field.getName()); jsonGenerator.writeObject(field.get(dto)); } } catch (Exception e) { e.printStackTrace(); } jsonGenerator.writeEndObject(); } }
Das obige ist der detaillierte Inhalt vonSo lösen Sie die Serialisierungs- und Deserialisierungsprobleme von Json in SpringBoot. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Die Kombination von golangWebSocket und JSON: Datenübertragung und Parsing realisieren In der modernen Webentwicklung wird die Datenübertragung in Echtzeit immer wichtiger. WebSocket ist ein Protokoll, das zur bidirektionalen Kommunikation verwendet wird. Im Gegensatz zum herkömmlichen HTTP-Anfrage-Antwort-Modell ermöglicht WebSocket dem Server, Daten aktiv an den Client zu übertragen. JSON (JavaScriptObjectNotation) ist ein leichtes Format für den Datenaustausch, das prägnant und leicht lesbar ist.

SpringBoot und SpringMVC sind beide häufig verwendete Frameworks in der Java-Entwicklung, es gibt jedoch einige offensichtliche Unterschiede zwischen ihnen. In diesem Artikel werden die Funktionen und Verwendungsmöglichkeiten dieser beiden Frameworks untersucht und ihre Unterschiede verglichen. Lassen Sie uns zunächst etwas über SpringBoot lernen. SpringBoot wurde vom Pivotal-Team entwickelt, um die Erstellung und Bereitstellung von Anwendungen auf Basis des Spring-Frameworks zu vereinfachen. Es bietet eine schnelle und einfache Möglichkeit, eigenständige, ausführbare Dateien zu erstellen

MySQL5.7 und MySQL8.0 sind zwei verschiedene MySQL-Datenbankversionen. Es gibt einige Hauptunterschiede zwischen ihnen: Leistungsverbesserungen: MySQL8.0 weist im Vergleich zu MySQL5.7 einige Leistungsverbesserungen auf. Dazu gehören bessere Abfrageoptimierer, eine effizientere Erstellung von Abfrageausführungsplänen, bessere Indizierungsalgorithmen und parallele Abfragen usw. Diese Verbesserungen können die Abfrageleistung und die Gesamtsystemleistung verbessern. JSON-Unterstützung: MySQL 8.0 führt native Unterstützung für den JSON-Datentyp ein, einschließlich Speicherung, Abfrage und Indizierung von JSON-Daten. Dies macht die Verarbeitung und Bearbeitung von JSON-Daten in MySQL bequemer und effizienter. Transaktionsfunktionen: MySQL8.0 führt einige neue Transaktionsfunktionen ein, z. B. atomic

Zu den Leistungsoptimierungsmethoden für die Konvertierung von PHP-Arrays in JSON gehören: Verwendung von JSON-Erweiterungen und der Funktion json_encode(); Verwendung von Puffern zur Verbesserung der Leistung der Schleifencodierung; JSON-Codierungsbibliothek.

Verwenden Sie die Funktion json.MarshalIndent in Golang, um die Struktur in einen formatierten JSON-String zu konvertieren. Bei diesem Prozess kann uns die Funktion json.MarshalIndent helfen formatierte Ausgabe. Im Folgenden erläutern wir detailliert die Verwendung dieser Funktion und stellen konkrete Codebeispiele bereit. Erstellen wir zunächst eine Struktur mit einigen Daten. Das Folgende ist ein Hinweis

Schnellstart: Pandas-Methode zum Lesen von JSON-Dateien, spezifische Codebeispiele sind erforderlich. Einführung: Im Bereich Datenanalyse und Datenwissenschaft ist Pandas eine der wichtigsten Python-Bibliotheken. Es bietet umfangreiche Funktionen und flexible Datenstrukturen und kann verschiedene Daten problemlos verarbeiten und analysieren. In praktischen Anwendungen stoßen wir häufig auf Situationen, in denen wir JSON-Dateien lesen müssen. In diesem Artikel wird erläutert, wie Sie mit Pandas JSON-Dateien lesen und spezifische Codebeispiele anhängen. 1. Installation von Pandas

Anmerkungen in der Jackson-Bibliothek steuern die JSON-Serialisierung und -Deserialisierung: Serialisierung: @JsonIgnore: Ignorieren Sie die Eigenschaft @JsonProperty: Geben Sie den Namen an @JsonGetter: Verwenden Sie die get-Methode @JsonSetter: Verwenden Sie die set-Methode Deserialisierung: @JsonIgnoreProperties: Ignorieren Sie die Eigenschaft @ JsonProperty: Geben Sie den Namen @JsonCreator an: Verwenden Sie den Konstruktor @JsonDeserialize: Benutzerdefinierte Logik

Die Verwendung der json_encode()-Funktion von PHP zum Konvertieren eines Arrays oder Objekts in einen JSON-String und zum Formatieren der Ausgabe kann die Übertragung und den Austausch von Daten zwischen verschiedenen Plattformen und Sprachen erleichtern. In diesem Artikel wird die grundlegende Verwendung der Funktion json_encode() sowie die Formatierung und Ausgabe einer JSON-Zeichenfolge vorgestellt. 1. Grundlegende Verwendung der Funktion json_encode() Die grundlegende Syntax der Funktion json_encode() lautet wie folgt: stringjson_encod
