Skip to content

Commit f3c0fe7

Browse files
author
padmelina
committed
Multi dimension arrays parsing
1 parent 4328c6e commit f3c0fe7

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

application-entity/src/main/java/ru/art/entity/Entity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -802,7 +802,7 @@ public EntityBuilder stringParametersCollectionField(String name, Collection<Str
802802
return this;
803803
}
804804

805-
public EntityBuilder collectionValueCollectionField(String name, Collection<CollectionValue<?>> value) {
805+
public EntityBuilder collectionValueCollectionField(String name, Collection<CollectionValue<Entity>> value) {
806806
fields.put(name, collectionValue(CollectionElementsType.COLLECTION, value));
807807
return this;
808808
}

application-json/src/main/java/ru/art/json/descriptor/JsonEntityReader.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ private static void parseArray(EntityBuilder entityBuilder, JsonParser parser) t
154154
entityBuilder.entityCollectionField(currentName, parseEntityArray(parser));
155155
return;
156156
case START_ARRAY:
157-
entityBuilder.collectionValueField(currentName, parseArray(parser));
157+
entityBuilder.collectionValueCollectionField(currentName, parseArraysArray(parser));
158158
return;
159159
case VALUE_STRING:
160160
entityBuilder.stringCollectionField(currentName, parseStringArray(parser));
@@ -187,7 +187,7 @@ private static CollectionValue<?> parseArray(JsonParser parser) throws IOExcepti
187187
case START_OBJECT:
188188
return entityCollection(parseEntityArray(parser));
189189
case START_ARRAY:
190-
return parseArray(parser);
190+
return collectionOfCollections(parseArraysArray(parser));
191191
case VALUE_STRING:
192192
return stringCollection(parseStringArray(parser));
193193
case VALUE_NUMBER_INT:
@@ -267,4 +267,14 @@ private static Collection<Entity> parseEntityArray(JsonParser parser) throws IOE
267267
} while (!parser.isClosed() && currentToken != END_ARRAY);
268268
return array;
269269
}
270+
271+
private Collection<CollectionValue<Entity>> parseArraysArray(JsonParser parser) throws IOException {
272+
List<CollectionValue<Entity>> array = dynamicArrayOf();
273+
JsonToken currentToken = parser.currentToken();
274+
do {
275+
if (currentToken != START_ARRAY) array.add(entityCollection(parseEntityArray(parser)));
276+
currentToken = parser.nextToken();
277+
} while (!parser.isClosed() && currentToken != END_ARRAY);
278+
return array;
279+
}
270280
}

0 commit comments

Comments
 (0)