diff --git a/json/src/main/kotlin/org/openrs2/json/JsonPrettyPrinter.kt b/json/src/main/kotlin/org/openrs2/json/JsonPrettyPrinter.kt new file mode 100644 index 00000000..57bf57df --- /dev/null +++ b/json/src/main/kotlin/org/openrs2/json/JsonPrettyPrinter.kt @@ -0,0 +1,24 @@ +package org.openrs2.json + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.util.DefaultIndenter +import com.fasterxml.jackson.core.util.DefaultPrettyPrinter + +public class JsonPrettyPrinter : DefaultPrettyPrinter() { + init { + indentArraysWith(UNIX_INDENT) + indentObjectsWith(UNIX_INDENT) + } + + override fun createInstance(): DefaultPrettyPrinter { + return JsonPrettyPrinter() + } + + override fun writeObjectFieldValueSeparator(g: JsonGenerator) { + g.writeRaw(": ") + } + + private companion object { + private val UNIX_INDENT = DefaultIndenter(" ", "\n") + } +} diff --git a/json/src/main/kotlin/org/openrs2/json/ObjectMapperProvider.kt b/json/src/main/kotlin/org/openrs2/json/ObjectMapperProvider.kt index ce98ae29..f064286e 100644 --- a/json/src/main/kotlin/org/openrs2/json/ObjectMapperProvider.kt +++ b/json/src/main/kotlin/org/openrs2/json/ObjectMapperProvider.kt @@ -3,6 +3,7 @@ package org.openrs2.json import com.fasterxml.jackson.databind.Module import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.PropertyNamingStrategies +import com.fasterxml.jackson.databind.SerializationFeature import com.fasterxml.jackson.module.kotlin.registerKotlinModule import javax.inject.Inject import javax.inject.Provider @@ -14,6 +15,8 @@ public class ObjectMapperProvider @Inject constructor( return ObjectMapper() .registerKotlinModule() .registerModules(modules) + .enable(SerializationFeature.INDENT_OUTPUT) + .setDefaultPrettyPrinter(JsonPrettyPrinter()) .setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE) } }