@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
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); } }
@ 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
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{ "brand":"Benz", "attr2":"val2", "attr1":"val1" }
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; } }3. Passen Sie eine Serialisierungstoolklasse an, die StdSerializer8742468051c85b06f0a0af9e3e506b5c implementieren muss ;
{ "brand":"Benz", "attr2":"val2", "attr1":"val1" }(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; }
/** * 〈返回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; } }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
Serializer-Modifikator
@JsonInclude(Include.NON_NULL)(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(); } }
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!