diff --git a/modules/swagger-core/src/main/java/io/swagger/util/ModelDeserializer.java b/modules/swagger-core/src/main/java/io/swagger/util/ModelDeserializer.java index 5483f14351..ab6075e1d8 100644 --- a/modules/swagger-core/src/main/java/io/swagger/util/ModelDeserializer.java +++ b/modules/swagger-core/src/main/java/io/swagger/util/ModelDeserializer.java @@ -51,8 +51,9 @@ public Model deserialize(JsonParser jp, DeserializationContext ctxt) return model; } else { sub = node.get("type"); + JsonNode items = node.get("items"); Model model = null; - if (sub != null && "array".equals(((TextNode) sub).textValue())) { + if ((sub != null && "array".equals(((TextNode) sub).textValue())) || (items != null)){ model = Json.mapper().convertValue(node, ArrayModel.class); } else { model = Json.mapper().convertValue(node, ModelImpl.class); diff --git a/modules/swagger-core/src/test/java/io/swagger/deserialization/JsonDeserializationTest.java b/modules/swagger-core/src/test/java/io/swagger/deserialization/JsonDeserializationTest.java index 0dd1b7758c..eb7bbafbba 100644 --- a/modules/swagger-core/src/test/java/io/swagger/deserialization/JsonDeserializationTest.java +++ b/modules/swagger-core/src/test/java/io/swagger/deserialization/JsonDeserializationTest.java @@ -2,7 +2,10 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; +import static org.testng.AssertJUnit.assertNotNull; +import io.swagger.models.ArrayModel; +import io.swagger.models.Model; import io.swagger.models.Swagger; import io.swagger.models.properties.ObjectProperty; import io.swagger.models.properties.MapProperty; @@ -12,6 +15,7 @@ import io.swagger.util.ResourceUtils; import com.fasterxml.jackson.databind.ObjectMapper; +import io.swagger.util.Yaml; import org.testng.annotations.Test; import java.io.IOException; @@ -117,4 +121,19 @@ public void testNestedUntypedProperty() throws IOException { assertTrue(additionalProperties instanceof UntypedProperty); assertEquals(additionalProperties.getDescription(), "map value"); } + + @Test(description = "it should deserialize an array untyped") + public void testArrayUntypedModel() throws IOException { + final String json = "{\n" + + " \"description\":\"top level object\",\n" + + " \"items\":{}" + + "}"; + final Model result = m.readValue(json, Model.class); + assertTrue(result instanceof ArrayModel); + + final ArrayModel array = (ArrayModel) result; + assertEquals(array.getType(),"array"); + assertEquals(array.getDescription(), "top level object"); + assertNotNull(array.getItems()); + } }