SpringBoot сериализует Json и XML с Джексоном

JSON

Что касается библиотеки Json, самое последнее обсуждение — это FastJson с открытым исходным кодом от Alibaba, хотя смущает то, что основным содержанием обсуждения являются ее часто выявляемые уязвимости безопасности. Основная причина воздействия уязвимости FastJson заключается в том, что она очень популярна в Китае, в то время как Jackson является основным выбором за границей Причина популярности FastJson в Китае может заключаться в том, что автор — китаец, версия часто обновляется и есть много китайских материалов.Кроме того, есть еще одна хитрая причина в том, что часто используемые методы FastJson все настроены как статические методы, которые можно использовать непосредственно для простой сериализации и десериализации без инстанцирования или настройки. Все операции Джексона зависят от объекта ObjectMapper для завершения, и перед использованием требуются следующие операции:

ObjectMapper mapper = new ObjectMapper();
mapper.xxxx

Я уже говорил так много чепухи, но я хочу сказать, что Джексон немного сложен в использовании для новичков.

Простой в использовании

Jackson — это библиотека Json, официально рекомендованная SpringBoot.Начиная с SpringBoot 1.2.0, SpringBoot предоставляет для нее автоматическую настройку.org.springframework.boot.autoconfigure.jacksonПод пакетом вы можете увидеть класс автоконфигурации Джексона.JacksonAutoConfiguration, когда в файле конфигурации есть конфигурация с префиксом «spring.jackson», в контейнер Spring будет внедрен bean-компонент типа ObjectMapper. Если во время разработки не требуется специальной настройки, этот bean-компонент можно использовать напрямую:

@Autowired
private ObjectMapper objectMapper;

пользовательская конфигурация

Джексон предоставляет множество дополнительных настроек для удовлетворения различных потребностей и сценариев.Вы можете настроить новый Bean типа ObjectMapper и установить соответствующие свойства:

@Configuration
public class JSONConverterConfig {    
    @Bean(name = "objectMapper")    
    public ObjectMapper jacksonJsonMapper() {        
        ObjectMapper mapper = new ObjectMapper();        
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);       
        return mapper;   
        }
}

Приведенный выше код представляет собой bean-компонент, настроенный с помощью ObjectMapper и настроенный со свойствамиFAIL_ON_UNKNOWN_PROPERTIES, для неизвестных свойств, появляющихся в Json, исключение не будет создано, но будет проигнорировано. Конфигурация, связанная с Джексоном, находится вDeserializationFeatureа такжеSerializationFeatureможно настроить по мере необходимости.

Сериализация XML с Джексоном

Jackson — это не только библиотека Json, но и библиотека Xml, которая также может быть получена из имени ее пакета.com.fasterxml.jacksonпонять это. Как и в случае с Json, все операции Джексона с XML зависят от экземпляра объекта XmlMapper, который является подклассом ObjectMapper:

public class XmlMapper extends ObjectMapper {
    ...
}

жаль,org.springframework.boot.autoconfigureАвтоматическая настройка XmlMapper не предусмотрена, нам нужно вручную определить класс конфигурации:

@Configuration
public class XmlConverterConfig {    
    @Bean(name = "xmlMapper")    
    public XmlMapper jacksonXmlMapper() {        
        XmlMapper mapper = new XmlMapper();        
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);        
        return mapper;    
        }
}

Из-за отношения наследования между XmlMapper и ObjectMapper, если настроен только XmlMapper Bean, Bean ObjectMapper можно использовать непосредственно в программе для работы, но объект будет сериализован в XML вместо ожидаемого Json, который необходимо различать. при его использовании.