Skip to content
Object notation in pure Kotlin!
Branch: master
Clone or download
Latest commit a4ecd3d Jan 25, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/main/kotlin/org/jire/kton Relicensed under Apache 2.0, added BinTray/Maven Central support, add… Jul 28, 2016
LICENSE.txt Fixed license and added BinTray project description to `build.gradle` Jul 29, 2016 Update Dec 26, 2018
build.gradle Fixed license and added BinTray project description to `build.gradle` Jul 29, 2016
settings.gradle Working on getting Travis to build Jan 19, 2016


Object notation in pure Kotlin!

Build Status Dependency Status license


compile 'org.jire.kton:KTON:1.0.1'



KTON allows you to notate objects in an easy syntax using pure Kotlin. This is mostly a toy project but it may be useful for certain cases. I'd like to make conversion to JSON and provide more advanced features.

The following shows the differences between JSON, XML, and KTON. (Data used from


    "menu": {
        "id": "file",
        "value": "File",
        "popup": {
            "menuitem": [
                { "value": "New", "onclick": "CreateNewDoc()" },
                { "value": "Open", "onclick": "OpenDoc()" },
                { "value": "Close", "onclick": "CloseDoc()" }


<menu id="file" value="File">
        <menuitem value="New" onclick="CreateNewDoc()" />
        <menuitem value="Open" onclick="OpenDoc()" />
        <menuitem value="Close" onclick="CloseDoc()" />


val menu = kton {
    "id" to "file"
    "value" to "File"
    "popup" {
        "menuitem" [
            { "value" to "New"; "onclick" to "CreateNewDoc()" },
            { "value" to "Open"; "onclick" to "OpenDoc()" },
            { "value" to "Close"; "onclick" to "CloseDoc()" }

Accessing data from a KTON is done with concise syntax. Using the above example...

// Value access through get operator:
val id = menu["id"] // "file"
val value = menu["value"] // "File"

// Body access through invoke operator:
val popup = menu("popup")
val menuitems = popup("menuitem")

// Array access through get operator specifying index:
val newValue = menuitems[0]["value"] // "New"
val open = menuitems[1]
val openValue = open["value"] // "Open"
val closeOnClick = menuitems[2]["onclick"] // "CloseDoc()"
You can’t perform that action at this time.