检索$参考「;swagger.json中的字段

检索$参考「;swagger.json中的字段,swagger,swagger-2.0,Swagger,Swagger 2.0,我试图使用swagger解析器来解析和检索“swagger.json”(io.swagger.parser.SwaggerParser;)中的信息 下面是“swagger.json”的摘录。 我正在尝试检索“$ref”:“#/definitions/abc” 这是解析它的代码 SwaggerParser sparse = new SwaggerParser(); Swagger swagger = sparse.read("swagger.json"); //下一行是我遇到的问

我试图使用swagger解析器来解析和检索“swagger.json”(io.swagger.parser.SwaggerParser;)中的信息

下面是“swagger.json”的摘录。 我正在尝试检索“$ref”:“#/definitions/abc”

这是解析它的代码

    SwaggerParser sparse = new SwaggerParser();
    Swagger swagger = sparse.read("swagger.json");
//下一行是我遇到的问题。 swagger.getPath(“/endpointurl”).getGet().getResponses().get(“200”).getSchema()

此时,上行中的“.getSchema()”中只有“getType()”我可以调用。它没有“get$ref()”。这是因为“.getSchema()”返回一个“属性”(io.swagger.models.properties.Property)。它没有“get$ref()”

get$ref()在“RefProperty”(io.swagger.models.properties.RefProperty)中可用

但是“.getSchema()”不返回“RefProperty”。 将“.getSchema()”的结果类型转换为“RefProperty”也不起作用。结果就是这个错误。 java.lang.ClassCastException:io.swagger.models.properties.ArrayProperty不能强制转换为io.swagger.models.properties.RefProperty

有没有人尝试过解析“swagger.json”,并且能够在“response”块的“schema”下检索“$ref”:行


你知道我该怎么做吗?

我想出了一个办法。也许不是最好的方法,但它会检索“#ref”中的信息

我不得不做一些类型铸件。如果你有一个更优雅的方式做这件事,请张贴在这里

    SwaggerParser sparse = new SwaggerParser();
    Swagger swagger = sparse.read("swagger.json");
        Object obj = xxxxx.getSchema(); // xxxxx is whatever your code that gives you ".getSchema()". Mine is in a map and I don't want to distract people.

        ArrayProperty arrProp = new ArrayProperty();

        arrProp = (ArrayProperty)obj; // .getSchema() returns an ArrayProperty

        RefProperty refProperty = (RefProperty) arrProp.getItems(); // .getItems() will return the RefProperty type you need to call ".get$ref()".
        String refStr = refProperty.get$ref(); // Voila, there's your content in "#ref".
        String simpleRefStr = refProperty.getSimpleRef();