diff --git a/src/main/java/com/kintone/client/RecordSerializer.java b/src/main/java/com/kintone/client/RecordSerializer.java index 53e5ad5..c1df4ff 100644 --- a/src/main/java/com/kintone/client/RecordSerializer.java +++ b/src/main/java/com/kintone/client/RecordSerializer.java @@ -253,6 +253,9 @@ private void writeSubtable(JsonGenerator gen, String fieldCode, List r gen.writeArrayFieldStart("value"); for (TableRow row : rows) { gen.writeStartObject(); + if (row.getId() != null) { + gen.writeNumberField("id", row.getId()); + } gen.writeObjectFieldStart("value"); writeTableRow(row, gen); gen.writeEndObject(); diff --git a/src/test/java/com/kintone/client/RecordSerializerTest.java b/src/test/java/com/kintone/client/RecordSerializerTest.java index a8f8031..6263199 100644 --- a/src/test/java/com/kintone/client/RecordSerializerTest.java +++ b/src/test/java/com/kintone/client/RecordSerializerTest.java @@ -417,6 +417,28 @@ public void serialize_SUBTABLE_empty() throws IOException { assertThat(json).isEqualTo("{\"table\":{\"value\":[]}}"); } + @Test + public void serialize_SUBTABLE_withId() throws IOException { + TableRow row1 = new TableRow(123L).putField("text", new SingleLineTextFieldValue("test 1")); + TableRow row2 = new TableRow(456L).putField("text", new SingleLineTextFieldValue("test 2")); + Record record = new Record().putField("table", new SubtableFieldValue(row1, row2)); + String json = mapper.writeValueAsString(record); + assertThat(json) + .isEqualTo( + "{\"table\":{\"value\":[{\"id\":123,\"value\":{\"text\":{\"value\":\"test 1\"}}},{\"id\":456,\"value\":{\"text\":{\"value\":\"test 2\"}}}]}}"); + } + + @Test + public void serialize_SUBTABLE_withAndWithoutId() throws IOException { + TableRow row1 = new TableRow(123L).putField("text", new SingleLineTextFieldValue("with id")); + TableRow row2 = new TableRow().putField("text", new SingleLineTextFieldValue("without id")); + Record record = new Record().putField("table", new SubtableFieldValue(row1, row2)); + String json = mapper.writeValueAsString(record); + assertThat(json) + .isEqualTo( + "{\"table\":{\"value\":[{\"id\":123,\"value\":{\"text\":{\"value\":\"with id\"}}},{\"value\":{\"text\":{\"value\":\"without id\"}}}]}}"); + } + @Test public void serialize_TIME() throws IOException { Record record = new Record().putField("time", new TimeFieldValue(LocalTime.of(0, 0)));