<@U0B8ZP13Q> This is promising: ``` @Test fun `loa...
# klaxon
j
@cedric This is promising:
Copy code
@Test
fun `loading using jackson`() {
    val raw = loadLargeInputStream().readToString()

    val mapper = jacksonObjectMapper()
    val value = LOGGER.timeLogAndReturnValue("Reading in using Jackson") {
        mapper.readValue<Map<String, Any>>(raw)
    }

    val test = LOGGER.timeLogAndReturnValue("Convert to Klaxon Json") {
        json {
            convertMap(value)
        }
    }
}

fun KlaxonJson.convertMap(map: Map<String, *>): JsonObject {
    val pairs =
        map
            .mapNotNull { entry ->
                val valueConverted = convertValue(entry.value)
                valueConverted?.let { entry.key to it }
            }
            .toTypedArray()
    return obj(*pairs)
}

fun KlaxonJson.convertArray(array: Collection<*>): JsonArray<*> {
    val elements =
        array.map { convertValue(it) }
    return array(elements)
}

fun KlaxonJson.convertValue(value: Any?): Any? {
    return when (value) {
        is String -> value
        is Collection<*> -> convertArray(value)
        is Map<*, *> -> convertMap(value as Map<String, *>)
        null -> null
        else -> value
    }
}
Copy code
15:14:37.951 [main] INFO  c.p.f.c.schema.LargeJsonTest - Starting: Reading in using Jackson
15:14:41.274 [main] INFO  c.p.f.c.schema.LargeJsonTest - Time Taken Reading in using Jackson In Milliseconds = 3315
15:14:41.275 [main] INFO  c.p.f.c.schema.LargeJsonTest - Starting: Convert to Klaxon Json
15:14:47.013 [main] INFO  c.p.f.c.schema.LargeJsonTest - Time Taken Convert to Klaxon Json In Milliseconds = 5738