Skip to content

Commit 3d0e529

Browse files
committed
Write nulls from columns to JSON explicitly
1 parent d9d5f92 commit 3d0e529

File tree

2 files changed

+9
-3
lines changed
  • core/src
    • main/kotlin/org/jetbrains/kotlinx/dataframe/io
    • test/kotlin/org/jetbrains/kotlinx/dataframe/io

2 files changed

+9
-3
lines changed

core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/json.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -858,10 +858,10 @@ private val valueTypes =
858858
setOf(Boolean::class, Double::class, Int::class, Float::class, Long::class, Short::class, Byte::class)
859859

860860
internal fun KlaxonJson.encodeRow(frame: ColumnsContainer<*>, index: Int): JsonObject? {
861-
val values = frame.columns().mapNotNull { col ->
861+
val values = frame.columns().map { col ->
862862
when {
863863
col is ColumnGroup<*> -> encodeRow(col, index)
864-
col is FrameColumn<*> -> col[index]?.let { encodeFrame(it) }
864+
col is FrameColumn<*> -> encodeFrame(col[index])
865865
col.isList() -> {
866866
col[index]?.let { array(it as List<*>) } ?: array()
867867
}
@@ -874,7 +874,7 @@ internal fun KlaxonJson.encodeRow(frame: ColumnsContainer<*>, index: Int): JsonO
874874
}
875875

876876
else -> col[index]?.toString()
877-
}?.let { col.name to it }
877+
}.let { col.name to it }
878878
}
879879
if (values.isEmpty()) return null
880880
return obj(values)

core/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/json.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -945,4 +945,10 @@ class JsonTests {
945945
}
946946
}
947947
}
948+
949+
@Test
950+
fun `nulls in columns should be encoded explicitly`() {
951+
val df = dataFrameOf("a", "b")("1", null, "2", 12)
952+
df.toJson(canonical = true) shouldContain "\"b\":null"
953+
}
948954
}

0 commit comments

Comments
 (0)