KotlinxJsonModel

object KotlinxJsonModel : JsonModel<JsonElement> , JsonFactory<JsonElement>

A JsonModel for kotlinx.serialization JsonElement values.

The model reads the elements of the tree directly. It does not copy them. A number keeps the exact text of the JSON input, so numberValue is exact.

Every JSON number has the kind JsonKind.NUMBER. numberValue keeps the text of the number and reads it only when the evaluator needs the exact value.

A JsonPrimitive that is not a string can hold text that is not a JSON literal, for example NaN from JsonPrimitive(Double.NaN) or the text of JsonUnquotedLiteral. The model classifies such a primitive as a JsonKind.STRING with its text.

Functions

Link copied to clipboard
open override fun array(elements: List<JsonElement>): JsonElement
Link copied to clipboard
open override fun arrayLength(array: JsonElement): Int
Link copied to clipboard
open override fun bool(value: Boolean): JsonElement
Link copied to clipboard
open fun compareNumbers(a: JsonNumber?, b: JsonNumber?): Int
Link copied to clipboard
open fun <S : Any?> copyOf(model: JsonModel<S?>?, value: S?): Maybe<JsonElement?>?
Link copied to clipboard
open override fun element(array: JsonElement, index: Int): Maybe<JsonElement>
Link copied to clipboard
open fun equal(a: JsonElement?, b: JsonElement?): Boolean
Link copied to clipboard
open override fun hasDuplicate(object: JsonElement, name: JsonString): Boolean

A JsonObject is a map, so it cannot hold duplicate names.

Link copied to clipboard
open override fun kind(node: JsonElement): JsonKind
Link copied to clipboard
open override fun member(object: JsonElement, name: JsonString): Maybe<JsonElement>
Link copied to clipboard
open override fun memberCount(object: JsonElement): Int
Link copied to clipboard
open override fun memberCursor(object: JsonElement): MemberCursor<JsonElement>
Link copied to clipboard
open fun members(object: JsonElement?): Stream<Property<JsonElement?>?>?
Link copied to clipboard
open override fun nullValue(): JsonElement
Link copied to clipboard
open override fun number(value: JsonNumber): Maybe<JsonElement>

The text of the exact value keeps each number exact, also with a very large exponent.

Link copied to clipboard
open override fun numberValue(number: JsonElement): JsonNumber
Link copied to clipboard
open override fun object(members: List<Property<JsonElement>>): JsonElement
Link copied to clipboard
open override fun string(value: JsonString): JsonElement
Link copied to clipboard
open override fun stringValue(string: JsonElement): JsonString