jsonMapperBuilderFromProperties function

JsonMapperBuilder jsonMapperBuilderFromProperties(
  1. Environment environment, {
  2. BeanIntrospector? introspector,
  3. Iterable<JsonSerializer<Object>> serializers = const [],
  4. Iterable<JsonDeserializer<Object>> deserializers = const [],
  5. Iterable<JsonModule> modules = const [],
})

The JsonMapperBuilder that objectMapperFromProperties would build, with the spring.json.* properties of environment applied.

Use it to change a setting before building the mapper; the auto-configuration hands this builder to the JsonMapperBuilderCustomizer beans. The parameters are those of objectMapperFromProperties.

Implementation

JsonMapperBuilder jsonMapperBuilderFromProperties(
  Environment environment, {
  BeanIntrospector? introspector,
  Iterable<JsonSerializer<Object>> serializers = const [],
  Iterable<JsonDeserializer<Object>> deserializers = const [],
  Iterable<JsonModule> modules = const [],
}) {
  _warnUnsupportedKeys(environment);
  final json = bindBootProperties(environment, JsonProperties());
  final builder = JsonMapperBuilder()
    ..propertyNamingStrategy(
      PropertyNamingStrategy.parse(json.propertyNamingStrategy),
    )
    ..defaultPropertyInclusion(json.defaultPropertyInclusion)
    ..defaultTimeZone(json.timeZone)
    ..addSerializers(serializers)
    ..addDeserializers(deserializers)
    ..addModules(modules);
  if (introspector != null) {
    builder.introspector(introspector);
  }
  final deserialization = json.deserialization;
  final serialization = json.serialization;
  final dateTime = json.datatype.datetime;
  builder
    ..configure(
      DeserializationFeature.failOnUnknownProperties,
      deserialization.failOnUnknownProperties,
    )
    ..configure(
      DeserializationFeature.acceptFloatAsInt,
      deserialization.acceptFloatAsInt,
    )
    ..configure(
      DeserializationFeature.failOnNullForPrimitives,
      deserialization.failOnNullForPrimitives,
    )
    // The Boot 4 key (`datatype.datetime`) wins over the Boot 3 one.
    ..configure(
      DateTimeFeature.writeDatesAsTimestamps,
      dateTime.writeDatesAsTimestamps ?? serialization.writeDatesAsTimestamps,
    )
    ..configure(
      DateTimeFeature.writeDurationsAsTimestamps,
      dateTime.writeDurationsAsTimestamps ??
          serialization.writeDurationsAsTimestamps,
    )
    ..configure(
      DateTimeFeature.writeDateTimestampsAsNanoseconds,
      dateTime.writeDateTimestampsAsNanoseconds ??
          serialization.writeDateTimestampsAsNanoseconds,
    )
    ..configure(
      DateTimeFeature.readDateTimestampsAsNanoseconds,
      dateTime.readDateTimestampsAsNanoseconds ??
          deserialization.readDateTimestampsAsNanoseconds,
    )
    ..configure(SerializationFeature.indentOutput, serialization.indentOutput)
    ..configure(
      MapperFeature.sortPropertiesAlphabetically,
      json.mapper.sortPropertiesAlphabetically,
    )
    ..configure(
      MapperFeature.defaultViewInclusion,
      json.mapper.defaultViewInclusion,
    );
  return builder;
}