Skip to content

kotlin multiplatform json5 for kotlinx.serialization

License

Notifications You must be signed in to change notification settings

lisonge/kotlin-json5

Repository files navigation

kotlin-json5

kotlin multiplatform json5 for kotlinx.serialization

its principle is to convert a JSON5 string into a valid JsonElement object, which facilitates interoperability with kotlinx serialization

Usage

implementation("li.songe:json5:0.2.0")

Decode

Json5String -> JsonElement

// import li.songe.json5.Json5

val element = Json5.parseToJson5Element("{a:1}")

Json5String -> Object

// import kotlinx.serialization.json.Json
// import kotlinx.serialization.Serializable
// import li.songe.json5.decodeFromJson5String

val json = Json {
    // add your json config
    ignoreUnknownKeys = true
}

@Serializable
data class A(val id:Int)

val a = json.decodeFromJson5String<A>("{id:0, b:''}")

Encode

JsonElement -> Json5String

// import li.songe.json5.Json5

val formatted: String = Json5.encodeToString(element)

Object -> Json5String

// import kotlinx.serialization.json.Json
// import kotlinx.serialization.Serializable
// import li.songe.json5.encodeToJson5String

val json = Json {
  // add your json config
  ignoreUnknownKeys = true
}

@Serializable
data class A(val id:Int)

val formatted: String = json.encodeToJson5String(A(id=0))