summaryrefslogtreecommitdiff
path: root/formats/json
diff options
context:
space:
mode:
authorLeonid Startsev <sandwwraith@users.noreply.github.com>2023-12-04 18:27:42 +0100
committerGitHub <noreply@github.com>2023-12-04 18:27:42 +0100
commitb9945728413253cd5d05141b5e1a26f1130da777 (patch)
tree76229353ca7e7a47af693f0eae5dfad3d7081956 /formats/json
parent7c62a79daa062126f9a12617ca72b4b4c251e204 (diff)
downloadkotlinx.serialization-b9945728413253cd5d05141b5e1a26f1130da777.tar.gz
Make empty objects and arrays collapsed in pretty print mode (#2506)
because it is a widespread convention. Fixes #2502
Diffstat (limited to 'formats/json')
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt9
-rw-r--r--formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt2
2 files changed, 10 insertions, 1 deletions
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt
index c1ed8cca..abdd1c44 100644
--- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt
+++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/Composers.kt
@@ -27,6 +27,10 @@ internal open class Composer(@JvmField internal val writer: InternalJsonWriter)
writingFirst = false
}
+ open fun nextItemIfNotFirst() {
+ writingFirst = false
+ }
+
open fun space() = Unit
fun print(v: Char) = writer.writeChar(v)
@@ -88,6 +92,11 @@ internal class ComposerWithPrettyPrint(
repeat(level) { print(json.configuration.prettyPrintIndent) }
}
+ override fun nextItemIfNotFirst() {
+ if (writingFirst) writingFirst = false
+ else nextItem()
+ }
+
override fun space() {
print(' ')
}
diff --git a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt
index 4f7b1ec7..cf562de5 100644
--- a/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt
+++ b/formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt
@@ -96,7 +96,7 @@ internal class StreamingJsonEncoder(
override fun endStructure(descriptor: SerialDescriptor) {
if (mode.end != INVALID) {
composer.unIndent()
- composer.nextItem()
+ composer.nextItemIfNotFirst()
composer.print(mode.end)
}
}