@@ -160,17 +160,38 @@ Property propertyFromNode(JsonNode node) {
160160 return mapProperty ;
161161 }
162162 } else {
163- detailNode = node .get ("properties" );
164- Map <String , Property > properties = new HashMap <String , Property >();
165- if (detailNode != null ){
166- for (Iterator <Map .Entry <String ,JsonNode >> iter = detailNode .fields (); iter .hasNext ();){
167- Map .Entry <String ,JsonNode > field = iter .next ();
168- Property property = propertyFromNode (field .getValue ());
169- properties .put (field .getKey (), property );
170- }
171- }
163+ detailNode = node .get ("properties" );
164+ String detailNodeType = null ;
165+ Map <String , Property > properties = new HashMap <String , Property >();
166+ if (detailNode != null ){
167+ for (Iterator <Map .Entry <String ,JsonNode >> iter = detailNode .fields (); iter .hasNext ();){
168+ Map .Entry <String ,JsonNode > field = iter .next ();
169+ Property property = propertyFromNode (field .getValue ());
170+ if (property != null ) {
171+ properties .put (field .getKey (), property );
172+ }
173+ else {
174+ if ("type" .equals (field .getKey ()) && field .getValue () != null && "array" .equals (field .getValue ().asText ())) {
175+ detailNodeType = "array" ;
176+ }
177+ }
178+ }
179+ }
180+
181+ if ("array" .equals (detailNodeType )) {
182+ ArrayProperty ap = new ArrayProperty ();
183+ ap .setDescription (description );
184+
185+ if (properties .keySet ().size () == 1 ) {
186+ String key = properties .keySet ().iterator ().next ();
187+ ap .setItems (properties .get (key ));
188+ }
189+ ap .setVendorExtensionMap (getVendorExtensions (node ));
190+ return ap .description (description );
191+ }
172192 ObjectProperty objectProperty = new ObjectProperty (properties ).description (description );
173193 objectProperty .setVendorExtensionMap (getVendorExtensions (node ));
194+
174195 return objectProperty ;
175196 }
176197 }
0 commit comments