summaryrefslogtreecommitdiff
path: root/formats/json
diff options
context:
space:
mode:
authoraSemy <897017+aSemy@users.noreply.github.com>2023-05-09 17:30:56 +0200
committerGitHub <noreply@github.com>2023-05-09 17:30:56 +0200
commit9157bf81283ad3d1b4313873bc81150af2f69a4f (patch)
treed688dcc59260969affdd8bfd9cb5e5a067968b1a /formats/json
parentef67bcef0e5ee8ef0d19a3d9dcbb08e82a92c511 (diff)
downloadkotlinx.serialization-9157bf81283ad3d1b4313873bc81150af2f69a4f.tar.gz
Implement addAll functions for JsonArrayBuilder (#2156)
Fixes #2127
Diffstat (limited to 'formats/json')
-rw-r--r--formats/json/api/kotlinx-serialization-json.api4
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/JsonElementBuilders.kt39
2 files changed, 43 insertions, 0 deletions
diff --git a/formats/json/api/kotlinx-serialization-json.api b/formats/json/api/kotlinx-serialization-json.api
index 898a94a0..fec5e1b5 100644
--- a/formats/json/api/kotlinx-serialization-json.api
+++ b/formats/json/api/kotlinx-serialization-json.api
@@ -70,6 +70,7 @@ public final class kotlinx/serialization/json/JsonArray$Companion {
public final class kotlinx/serialization/json/JsonArrayBuilder {
public fun <init> ()V
public final fun add (Lkotlinx/serialization/json/JsonElement;)Z
+ public final fun addAll (Ljava/util/Collection;)Z
public final fun build ()Lkotlinx/serialization/json/JsonArray;
}
@@ -173,6 +174,9 @@ public final class kotlinx/serialization/json/JsonElementBuildersKt {
public static final fun add (Lkotlinx/serialization/json/JsonArrayBuilder;Ljava/lang/Number;)Z
public static final fun add (Lkotlinx/serialization/json/JsonArrayBuilder;Ljava/lang/String;)Z
public static final fun add (Lkotlinx/serialization/json/JsonArrayBuilder;Ljava/lang/Void;)Z
+ public static final fun addAllBooleans (Lkotlinx/serialization/json/JsonArrayBuilder;Ljava/util/Collection;)Z
+ public static final fun addAllNumbers (Lkotlinx/serialization/json/JsonArrayBuilder;Ljava/util/Collection;)Z
+ public static final fun addAllStrings (Lkotlinx/serialization/json/JsonArrayBuilder;Ljava/util/Collection;)Z
public static final fun addJsonArray (Lkotlinx/serialization/json/JsonArrayBuilder;Lkotlin/jvm/functions/Function1;)Z
public static final fun addJsonObject (Lkotlinx/serialization/json/JsonArrayBuilder;Lkotlin/jvm/functions/Function1;)Z
public static final fun buildJsonArray (Lkotlin/jvm/functions/Function1;)Lkotlinx/serialization/json/JsonArray;
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementBuilders.kt b/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementBuilders.kt
index b49a1aaa..7a25efdf 100644
--- a/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementBuilders.kt
+++ b/formats/json/commonMain/src/kotlinx/serialization/json/JsonElementBuilders.kt
@@ -7,6 +7,7 @@ package kotlinx.serialization.json
import kotlinx.serialization.ExperimentalSerializationApi
import kotlin.contracts.*
+import kotlin.jvm.JvmName
/**
* Builds [JsonObject] with the given [builderAction] builder.
@@ -136,6 +137,15 @@ public class JsonArrayBuilder @PublishedApi internal constructor() {
return true
}
+ /**
+ * Adds the given JSON [elements] to a resulting JSON array.
+ *
+ * @return `true` if the list was changed as the result of the operation.
+ */
+ @ExperimentalSerializationApi
+ public fun addAll(elements: Collection<JsonElement>): Boolean =
+ content.addAll(elements)
+
@PublishedApi
internal fun build(): JsonArray = JsonArray(content)
}
@@ -186,6 +196,35 @@ public fun JsonArrayBuilder.addJsonObject(builderAction: JsonObjectBuilder.() ->
public fun JsonArrayBuilder.addJsonArray(builderAction: JsonArrayBuilder.() -> Unit): Boolean =
add(buildJsonArray(builderAction))
+/**
+ * Adds the given string [values] to a resulting JSON array.
+ *
+ * @return `true` if the list was changed as the result of the operation.
+ */
+@JvmName("addAllStrings")
+@ExperimentalSerializationApi
+public fun JsonArrayBuilder.addAll(values: Collection<String?>): Boolean =
+ addAll(values.map(::JsonPrimitive))
+
+/**
+ * Adds the given boolean [values] to a resulting JSON array.
+ *
+ * @return `true` if the list was changed as the result of the operation.
+ */
+@JvmName("addAllBooleans")
+@ExperimentalSerializationApi
+public fun JsonArrayBuilder.addAll(values: Collection<Boolean?>): Boolean =
+ addAll(values.map(::JsonPrimitive))
+
+/**
+ * Adds the given numeric [values] to a resulting JSON array.
+ *
+ * @return `true` if the list was changed as the result of the operation.
+ */
+@JvmName("addAllNumbers")
+@ExperimentalSerializationApi
+public fun JsonArrayBuilder.addAll(values: Collection<Number?>): Boolean =
+ addAll(values.map(::JsonPrimitive))
@DslMarker
internal annotation class JsonDslMarker