Inhaltsverzeichnis
JSON-Serialisierung/Deserialisierung steuern
1. Die Verwendung von @JsonIgnoreProperties
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
SpringBoot-Serialisierungsregeln
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
Heim Java javaLernprogramm So lösen Sie die Serialisierungs- und Deserialisierungsprobleme von Json in SpringBoot

So lösen Sie die Serialisierungs- und Deserialisierungsprobleme von Json in SpringBoot

May 12, 2023 pm 04:07 PM
json springboot

JSON-Serialisierung/Deserialisierung steuern

1. Die Verwendung von @JsonIgnoreProperties

@JsonIgnoreProperties(value = { "prop1","prop2" })
Nach dem Login kopieren

wird verwendet, um die Pojo-Klasse zu ändern und die angegebenen Attribute während der Serialisierung und Deserialisierung zu ignorieren.

@JsonIgnoreProperties(ignoreUnknown = true)
Nach dem Login kopieren

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 kopieren
  • 6 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"
}
Nach dem Login kopieren
Nach dem Login kopieren
    2 . Lokale Einstellungen
  • für die Entitätsklasse oder das Feld, das festgelegt werden muss. Fügen Sie Anmerkungen hinzuInclude.Include.ALWAYS 默认

  • Include.NON_DEFAULT 属性为默认值不序列化

  • Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化

  • Include.NON_NULL

    public class Car {
        public String brand;
        private Map<String, String> properties;
     
        @JsonAnyGetter
        public Map<String, String> getProperties() {
            return properties;
        }
    }
    Nach dem Login kopieren

    3. Passen Sie eine Serialisierungstoolklasse an, die StdSerializer implementieren muss ;
  • {
    "brand":"Benz",
    "attr2":"val2",
    "attr1":"val1"
    }
    Nach dem Login kopieren
    Nach dem Login kopieren
(2) Verwenden Sie Annotationen, um auf Entitätsklassen zu reagieren. Das obige

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

/**
 * 〈返回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;
    }
}
Nach dem Login kopieren

4 zu konvertieren Nullwertverarbeitung in JSON-Daten und Konvertierung des String-Typs. Der Nullwert wird in „“ konvertiert, der Nullwert des Sammlungsarraytyps wird in [] konvertiert, der Nullwert des primitiven Datentyps wird in 0 konvertiert, der Nullwert des booleschen Typs wird konvertiert auf „false“ und der Nullwert des Entitätsobjekts wird in „{}“ konvertiert.

(1)

Benutzerdefinierter Nullwert-Serializer

spring.jackson.default-property-inclusion=non_null
spring:
  jackson:
    default-property-inclusion: non_null
Nach dem Login kopieren

(2)

Serializer-Modifikator

@JsonInclude(Include.NON_NULL)
Nach dem Login kopieren

(3)

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

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kombination von Golang WebSocket und JSON: Realisierung der Datenübertragung und -analyse Kombination von Golang WebSocket und JSON: Realisierung der Datenübertragung und -analyse Dec 17, 2023 pm 03:06 PM

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.

Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Vergleich und Differenzanalyse zwischen SpringBoot und SpringMVC Dec 29, 2023 am 11:02 AM

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

Was ist der Unterschied zwischen MySQL5.7 und MySQL8.0? Was ist der Unterschied zwischen MySQL5.7 und MySQL8.0? Feb 19, 2024 am 11:21 AM

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

Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON Tipps zur Leistungsoptimierung für die Konvertierung von PHP-Arrays in JSON May 04, 2024 pm 06:15 PM

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 Verwenden Sie die Funktion json.MarshalIndent in Golang, um die Struktur in einen formatierten JSON-String zu konvertieren Nov 18, 2023 pm 01:59 PM

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

Tutorial zur Pandas-Nutzung: Schnellstart zum Lesen von JSON-Dateien Tutorial zur Pandas-Nutzung: Schnellstart zum Lesen von JSON-Dateien Jan 13, 2024 am 10:15 AM

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

Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? May 06, 2024 pm 10:09 PM

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

Verwenden Sie die json_encode()-Funktion von PHP, um ein Array oder Objekt in einen JSON-String zu konvertieren und die Ausgabe zu formatieren Verwenden Sie die json_encode()-Funktion von PHP, um ein Array oder Objekt in einen JSON-String zu konvertieren und die Ausgabe zu formatieren Nov 03, 2023 pm 03:44 PM

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

See all articles