fix: swagger body参数循环依赖问题
This commit is contained in:
parent
9692b8d2a5
commit
c1c2bc7f76
|
@ -139,16 +139,21 @@ public class Swagger2Parser extends ApiImportAbstractParser {
|
|||
simpleRef = refModel.getSimpleRef();
|
||||
}
|
||||
Model model = definitions.get(simpleRef);
|
||||
JSONObject bodyParameters = getBodyJSONObjectParameters(model.getProperties(), definitions);
|
||||
HashSet<String> refSet = new HashSet<>();
|
||||
refSet.add(simpleRef);
|
||||
JSONObject bodyParameters = getBodyJSONObjectParameters(model.getProperties(), definitions, refSet);
|
||||
body.setRaw(bodyParameters.toJSONString());
|
||||
} else if (schema instanceof ArrayModel) {
|
||||
ArrayModel arrayModel = (ArrayModel) bodyParameter.getSchema();
|
||||
Property items = arrayModel.getItems();
|
||||
if (items instanceof RefProperty) {
|
||||
RefProperty refProperty = (RefProperty) items;
|
||||
Model model = definitions.get(refProperty.getSimpleRef());
|
||||
String simpleRef = refProperty.getSimpleRef();
|
||||
HashSet<String> refSet = new HashSet<>();
|
||||
refSet.add(simpleRef);
|
||||
Model model = definitions.get(simpleRef);
|
||||
JSONArray propertyList = new JSONArray();
|
||||
propertyList.add(getBodyJSONObjectParameters(model.getProperties(), definitions));
|
||||
propertyList.add(getBodyJSONObjectParameters(model.getProperties(), definitions, refSet));
|
||||
body.setRaw(propertyList.toString());
|
||||
}
|
||||
}
|
||||
|
@ -156,20 +161,26 @@ public class Swagger2Parser extends ApiImportAbstractParser {
|
|||
body.setFormat("json");
|
||||
}
|
||||
|
||||
private JSONObject getBodyJSONObjectParameters(Map<String, Property> properties, Map<String, Model> definitions) {
|
||||
private JSONObject getBodyJSONObjectParameters(Map<String, Property> properties, Map<String, Model> definitions, HashSet<String> refSet) {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
properties.forEach((key, value) -> {
|
||||
if (value instanceof ObjectProperty) {
|
||||
ObjectProperty objectProperty = (ObjectProperty) value;
|
||||
jsonObject.put(key, getBodyJSONObjectParameters(objectProperty.getProperties(), definitions));
|
||||
jsonObject.put(key, getBodyJSONObjectParameters(objectProperty.getProperties(), definitions, refSet));
|
||||
} else if (value instanceof ArrayProperty) {
|
||||
ArrayProperty arrayProperty = (ArrayProperty) value;
|
||||
Property items = arrayProperty.getItems();
|
||||
if (items instanceof RefProperty) {
|
||||
RefProperty refProperty = (RefProperty) items;
|
||||
Model model = definitions.get(refProperty.getSimpleRef());
|
||||
String simpleRef = refProperty.getSimpleRef();
|
||||
if (refSet.contains(simpleRef)) {
|
||||
jsonObject.put(key, new JSONArray());
|
||||
return;
|
||||
}
|
||||
refSet.add(simpleRef);
|
||||
Model model = definitions.get(simpleRef);
|
||||
JSONArray propertyList = new JSONArray();
|
||||
propertyList.add(getBodyJSONObjectParameters(model.getProperties(), definitions));
|
||||
propertyList.add(getBodyJSONObjectParameters(model.getProperties(), definitions, refSet));
|
||||
jsonObject.put(key, propertyList);
|
||||
} else {
|
||||
jsonObject.put(key, new ArrayList<>());
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 356bb744a72304067b9222cb0cb2be01d4ebff2a
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 7e4d80cc2b870a8cac6dbb9fe6711ab6041faf6d
|
Loading…
Reference in New Issue