W tym tygodniu nauczyłem się

…że, UUID = 00000000-0000-0000-0000-000000000000 zniknie w czeluściach JSON-a, jeżeli jacksonowym ObjectMapperze ustawimy serialization inclusion na NON_EMPTY.

Long story short:

  • Kolega Krzysztof zgłasza mi, że odpowiedź (w formacie JSON) na jednym z endpointów na środowisku DEV przestała zwracać pole accountId.
  • Sprawdzam. Faktycznie – nie ma. WTF?! Przecież to pole nie może być nullem…
  • Debuguję. No jest. Na wyjściu z kontrolera mamy POJO, a w nim accountId typu java.util.UUID z ustawioną wartością na 00000000-0000-0000-0000-000000000000. No ale w JSON-ie nie ma. WTFx2?!
  • Na szczęście szybko dotarło do mnie, że niedawno dodawałem globalne ustawienie objectMapper.setSerializationInclusion(NON_EMPTY).
  • Wychodzi na to, że Jackson traktuje w/w UUID jako pusty. Wiadomo, to jest UUID stworzony z ręki, tylko dla uproszczenia na środowiskach developerskich. Ale skoro java.util.UUID nie krzyczy, że nie jest on poprawny, to dlaczego Jackson się do niego nie przyznaje?