diff options
author | Leonid Startsev <sandwwraith@users.noreply.github.com> | 2023-12-04 18:27:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-04 18:27:42 +0100 |
commit | b9945728413253cd5d05141b5e1a26f1130da777 (patch) | |
tree | 76229353ca7e7a47af693f0eae5dfad3d7081956 /formats/json | |
parent | 7c62a79daa062126f9a12617ca72b4b4c251e204 (diff) | |
download | kotlinx.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.kt | 9 | ||||
-rw-r--r-- | formats/json/commonMain/src/kotlinx/serialization/json/internal/StreamingJsonEncoder.kt | 2 |
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) } } |