A type-safe builder for JSON objects in Kotlin, using GSON
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.bundle
.circleci
.github/ISSUE_TEMPLATE
fastlane
gradle/wrapper
jsondsl
.gitignore
Gemfile
Gemfile.lock
LICENSE
README.md
build.gradle
gradle.properties
gradlew
gradlew.bat
settings.gradle

README.md

JSON DSL

Codacy Badge GitHub license CircleCI (all branches)

A type-safe builder for creating JSON objects and arrays in Kotlin.

Installation

Firstly, add the JitPack repository to your project-level build.gradle file:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Then, in your module's build.gradle file, add the dependency:

dependencies {
    implementation 'com.ptrbrynt:json-dsl:1.1.2'
}

Usage

To create an empty JsonObject, use this syntax:

val json: JsonObject = jsonObject { }

Add properties like this:

val json: JsonObject = jsonObject {
    "my_property" to 7
    "another_one" to "hello"
}

You can add a nested object like this:

val json: JsonObject = jsonObject {
    "object" to jsonObject {
        "hello" to 7
    }
}

You can create a JsonArray like this:

val array: JsonArray = jsonArrayOf(
    7, 
    "hello",
    jsonObject {
        "a_property" to 'a'
    },
    jsonArrayOf(
        2,
        null
    )
)

You can add a JsonArray to a JsonObject like this:

val obj: JsonObject = jsonObject {
    "array" to jsonArrayOf(true, "hello")
}

Conversion

You can convert from a List to a JsonArray like this:

val jsonArray = listOf(2, 4, 6, 623).toJsonArray()

// Alternatively
val jsonArray = jsonArrayOf(listOf(2, 4, 6, 623))

You can also convert a HashMap to a JsonObject:

val obj = hashMapOf(Pair("hello", 7), Pair("goodbye", 12)).toJsonObject()