16 Ekim 2018 Salı

SpringBoot Jackson application.properties Ayarları

Giriş
Jackson ayarlarını özelleştirmek için 3 tane yöntem ver
1. application.properties ile özeleştirmek
3. Jackson2ObjectMapperBuilder ile özeleştirmek
4. ObjectMapper nesnesi direkt yaratılır ve özelleştirilir

Genel ayarlar şöyle. Yani serialization, deserialization, mapper ve diğer başlıklar altında bir sürü ayar var.
spring.jackson.deserialization.<feature_name>=true|false
spring.jackson.generator.<feature_name>=true|false
spring.jackson.mapper.<feature_name>=true|false
spring.jackson.parser.<feature_name>=true|false
spring.jackson.serialization.<feature_name>=true|false
spring.jackson.default-property-inclusion=always|non_null|non_absent|non_default|non_empty
Farklı bir Kütüphane Kullanmak
Jackson yerine Jsonb kullanmak için şöyle yaparız
spring.mvc.converters.preferred-json-mapper=jsonb

default-property-inclusion
Şöyle yaparız.
spring.data.rest.basePath=/api
server.servlet.context-path=/api
spring.jackson.default-property-inclusion=non_null
date-format
Şöyle yaparız
spring:
  jackson:
    serialization:
      fail-on-empty-beans: false
      write-dates-as-timestamps: false
    date-format: com.fasterxml.jackson.databind.util.ISO8601DateFormat
deserialization.fail-on-unknown-properties
Json'da object'in istediğinden fazla parametre varsa devreye girer. Varsayılan değer false olduğu için normalde fazla parametre gönderilse bile dikkate alınmaz.
Örnek
Şöyle yaparız.
spring.jackson.deserialization.fail-on-unknown-properties=true
property-naming-strategy
Bu alan şu değerlerden birisini alabilir
LOWER_CAMEL_CASE
LOWER_CASE
SNAKE_CASE
UPPER_CAMEL_CASE
KEBAB_CASE
Şöyle yaparız
spring.jackson.property-naming-strategy=LOWER_CAMEL_CASE
serialization.indent-out
Şöyle yaparız
spring.jackson.serialization.indent-output=true
write-dates-as-timestamps Alanı
Normalde Java Date sınıfı şöyle yazar
"timestamp": "2019-02-12T13:33:26.540+0000",
"1550038291" gibi unix timestamp değerini yazmak istersek bu alanı kullanırız.

timezone Alanı
Şöyle yaparız.
spring:
  jackson:
      serialization:
        write-dates-as-timestamps: true
        write_dates_with_zone_id: true
      time-zone: GMT
      default-property-inclusion: NON_NULL

Hiç yorum yok:

Yorum Gönder