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..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,7 +183,10 @@ public void serialize(Object value, JsonGenerator jgen, SerializerProvider provi break; } String val = values[i]; - 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); @@ -228,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; + } }