Skip to content

Commit def9135

Browse files
committed
Support list serialization in JSON
1 parent 5d75ab3 commit def9135

File tree

2 files changed

+10
-0
lines changed
  • core/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io
  • tests/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io

2 files changed

+10
-0
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import org.jetbrains.kotlinx.dataframe.api.cast
1616
import org.jetbrains.kotlinx.dataframe.api.dataFrameOf
1717
import org.jetbrains.kotlinx.dataframe.api.getColumn
1818
import org.jetbrains.kotlinx.dataframe.api.indices
19+
import org.jetbrains.kotlinx.dataframe.api.isList
1920
import org.jetbrains.kotlinx.dataframe.api.mapIndexed
2021
import org.jetbrains.kotlinx.dataframe.api.name
2122
import org.jetbrains.kotlinx.dataframe.api.rows
@@ -209,6 +210,9 @@ internal fun KlaxonJson.encodeRow(frame: ColumnsContainer<*>, index: Int): JsonO
209210
when {
210211
col is ColumnGroup<*> -> encodeRow(col, index)
211212
col is FrameColumn<*> -> col[index]?.let { encodeFrame(it) }
213+
col.isList() -> {
214+
array(col[index] as List<*>)
215+
}
212216
col.typeClass in valueTypes -> {
213217
val v = col[index]
214218
if ((v is Double && v.isNaN()) || (v is Float && v.isNaN())) {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,12 @@ class JsonTests {
133133
DataFrame.readJsonStr(df.toJson()) shouldBe df
134134
}
135135

136+
@Test
137+
fun `list serialization`() {
138+
val df = dataFrameOf("a")(listOf(1, 2, 3))
139+
DataFrame.readJsonStr(df.toJson()) shouldBe df
140+
}
141+
136142
@Test
137143
fun `literal json field named 'value'`() {
138144
val json = """

0 commit comments

Comments
 (0)