将swagger API文档(swagger.json)解析为Java对象

将swagger API文档(swagger.json)解析为Java对象,swagger,Swagger,我想将任何复杂的swagger API文档(swagger.json)解析为Java对象 可能是列表> 有哪些可用选项 我正在尝试使用io.swagger.parser.SwaggerParser 但是我想确保我知道其他可用的选项,并且我使用了正确的解析器,它足以解析任何复杂的文档 目前我们正在尝试如下 public List<Map<String,Object>> parse(String swaggerDocString) throws SwaggerParseEx

我想将任何复杂的swagger API文档(swagger.json)解析为Java对象

可能是列表>

有哪些可用选项

我正在尝试使用io.swagger.parser.SwaggerParser

但是我想确保我知道其他可用的选项,并且我使用了正确的解析器,它足以解析任何复杂的文档

目前我们正在尝试如下

public  List<Map<String,Object>> parse(String swaggerDocString) throws SwaggerParseException{
    try{
        Swagger swagger = new SwaggerParser().parse(swaggerDocString);
        return processSwagger(swagger);
    }catch(Exception ex){
        String exceptionRefId=OSGUtil.getExceptionReferenceId();
        logger.error("exception ref id " + exceptionRefId +  " : Error while loading swagger file " + ex);
        throw new SwaggerParseException("", ex.getLocalizedMessage(),exceptionRefId);
    }
}

public  List<Map<String,Object>> processSwagger(Swagger swagger){
    List<Map<String,Object>>  finalResult=new ArrayList<>();
    Map<String, Model>  definitions = swagger.getDefinitions();
    // loop all the available paths of the swagger
    if(swagger.getPaths()!=null && swagger.getPaths().keySet()!=null &&swagger.getPaths().keySet().size()>0 ){
        swagger.getPaths().keySet().forEach(group->{
            //get the path
            Path path=swagger.getPath(group);
            //list all the operations of the path
            Map<HttpMethod,Operation> mapList=path.getOperationMap();
            mapList.forEach((httpMethod,operation)->{
                processPathData(finalResult,operation,path,group,httpMethod,definitions,group);
            });

        });
    }
    return finalResult;
}
publicslist解析(stringswaggerdocstring)抛出SwaggerParseException{
试一试{
Swagger-Swagger=newswaggerparser().parse(swaggerDocString);
返回进程swagger(swagger);
}捕获(例外情况除外){
字符串exceptionRefId=OSGUtil.getExceptionReferenceId();
logger.error(“exception ref id”+exception refid+”:加载摆动文件时出错“+ex);
抛出新的SwaggerParseException(“,例如getLocalizedMessage(),exceptionRefId);
}
}
公共列表进程招摇过市(招摇过市){
List finalResult=new ArrayList();
映射定义=swagger.getDefinitions();
//循环招摇过市的所有可用路径
if(swagger.getpath()!=null和&swagger.getpath().keySet()!=null和&swagger.getpath().keySet().size()>0){
swagger.getpath().keySet().forEach(组->{
//找到路
Path Path=swagger.getPath(组);
//列出路径的所有操作
Map mapList=path.getOperationMap();
forEach((httpMethod,operation)->{
processPathData(最终结果、操作、路径、组、httpMethod、定义、组);
});
});
}
返回最终结果;
}
它们之间有什么区别

大摇大摆的兼容规范解析器,
swagger解析器拥有所有技术的实现。

这里提供了将swagger解析为Java的详细信息。