Skip to content

Commit 009a608

Browse files
authored
fix: include subtable id in serialized output (#74)
1 parent afe3b9a commit 009a608

2 files changed

Lines changed: 25 additions & 0 deletions

File tree

src/main/java/com/kintone/client/RecordSerializer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,9 @@ private void writeSubtable(JsonGenerator gen, String fieldCode, List<TableRow> r
253253
gen.writeArrayFieldStart("value");
254254
for (TableRow row : rows) {
255255
gen.writeStartObject();
256+
if (row.getId() != null) {
257+
gen.writeNumberField("id", row.getId());
258+
}
256259
gen.writeObjectFieldStart("value");
257260
writeTableRow(row, gen);
258261
gen.writeEndObject();

src/test/java/com/kintone/client/RecordSerializerTest.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,28 @@ public void serialize_SUBTABLE_empty() throws IOException {
417417
assertThat(json).isEqualTo("{\"table\":{\"value\":[]}}");
418418
}
419419

420+
@Test
421+
public void serialize_SUBTABLE_withId() throws IOException {
422+
TableRow row1 = new TableRow(123L).putField("text", new SingleLineTextFieldValue("test 1"));
423+
TableRow row2 = new TableRow(456L).putField("text", new SingleLineTextFieldValue("test 2"));
424+
Record record = new Record().putField("table", new SubtableFieldValue(row1, row2));
425+
String json = mapper.writeValueAsString(record);
426+
assertThat(json)
427+
.isEqualTo(
428+
"{\"table\":{\"value\":[{\"id\":123,\"value\":{\"text\":{\"value\":\"test 1\"}}},{\"id\":456,\"value\":{\"text\":{\"value\":\"test 2\"}}}]}}");
429+
}
430+
431+
@Test
432+
public void serialize_SUBTABLE_withAndWithoutId() throws IOException {
433+
TableRow row1 = new TableRow(123L).putField("text", new SingleLineTextFieldValue("with id"));
434+
TableRow row2 = new TableRow().putField("text", new SingleLineTextFieldValue("without id"));
435+
Record record = new Record().putField("table", new SubtableFieldValue(row1, row2));
436+
String json = mapper.writeValueAsString(record);
437+
assertThat(json)
438+
.isEqualTo(
439+
"{\"table\":{\"value\":[{\"id\":123,\"value\":{\"text\":{\"value\":\"with id\"}}},{\"value\":{\"text\":{\"value\":\"without id\"}}}]}}");
440+
}
441+
420442
@Test
421443
public void serialize_TIME() throws IOException {
422444
Record record = new Record().putField("time", new TimeFieldValue(LocalTime.of(0, 0)));

0 commit comments

Comments
 (0)