serialization
Types
Link copied to clipboard
open class CompactSerializer<T : Any>(val serialName: String, base: KClass<T>, catalog: JsonNodeCatalog = JsonNodeCatalog(), nodes: () -> List<JsonNode>) : KSerializer<T>
Compact JSON form, sealed form elsewhere. Needs polymorphic discriminators and no naming strategy.
Link copied to clipboard
class JsonNode(val type: KClass<*>, val name: String, val shape: JsonNodeShape = JsonNodeShape.Fields, val operands: List<String> = emptyList(), val mapping: JsonPayloadMapping? = null, val fixed: Map<String, JsonElement> = emptyMap(), serializer: () -> KSerializer<*>)
A concrete type and its compact JSON form.
Link copied to clipboard
class JsonNodeCatalog(resolve: (candidates: List<JsonNode>, payload: JsonElement) -> JsonNode? = null, serializers: () -> List<CompactSerializer<*>> = { emptyList() })
Compact vocabularies by name; resolve breaks wire-name ties.
Link copied to clipboard
Wire form of a node's fields.
Link copied to clipboard
interface JsonPayloadMapping
Maps a node's fields to and from its payload.
Functions
Link copied to clipboard
Link copied to clipboard
JSON Schema (draft 2020-12) for this vocabulary's compact form.
JSON Schema (draft 2020-12); catalog must list every compact vocabulary reached.