From 64b561d2a220c7db84eef0399603280f98456e8f Mon Sep 17 00:00:00 2001 From: Ram Date: Sun, 24 Jul 2022 08:55:39 -0700 Subject: [PATCH 1/2] Handle ArrayNode in FlatteningSerializer --- .../bot/restclient/serializer/FlatteningSerializer.java | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java b/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java index 13bfc5b9e..b3e5725f0 100644 --- a/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java +++ b/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java @@ -183,6 +183,7 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi break; } String val = values[i]; + if (node.has(val) && node.get(val).isArray()) break; if (node.has(val)) { node = (ObjectNode) node.get(val); } else { From dd8d198e849dffd59668fa71a1e6eaa2b3d3be4e Mon Sep 17 00:00:00 2001 From: Ram Fattah Date: Tue, 30 Aug 2022 09:01:17 -0700 Subject: [PATCH 2/2] Update FlatteningSerializer.Java --- .../serializer/FlatteningSerializer.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java b/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java index b3e5725f0..d0b1ab567 100644 --- a/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java +++ b/libraries/bot-connector/src/main/java/com/microsoft/bot/restclient/serializer/FlatteningSerializer.java @@ -183,8 +183,10 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi break; } String val = values[i]; - if (node.has(val) && node.get(val).isArray()) break; - if (node.has(val)) { + if (node.has(val) && node.get(val) instanceof ArrayNode) { + node = arrayToObjects((ArrayNode) node.get(val)); + } + else if (node.has(val)) { node = (ObjectNode) node.get(val); } else { ObjectNode child = new ObjectNode(JsonNodeFactory.instance); @@ -229,4 +231,12 @@ public void resolve(SerializerProvider provider) throws JsonMappingException { public void serializeWithType(Object value, JsonGenerator gen, SerializerProvider provider, TypeSerializer typeSerializer) throws IOException { serialize(value, gen, provider); } + + private static ObjectNode arrayToObjects(ArrayNode input) { + final ObjectNode result = JsonNodeFactory.instance.objectNode(); + + input.forEach(node -> node.fields().forEachRemaining(entry -> result.set(entry.getKey(), entry.getValue()))); + + return result; + } }