检索" $ ref" swagger.json中的字段

时间:2017-10-14 00:08:40

标签: swagger swagger-2.0

我正在尝试使用swagger解析器来解析和检索" swagger.json" (io.swagger.parser.SwaggerParser;)

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

    "responses" : {
      "200" : {
        "description" : "abc",
        "schema" : {
          "$ref" : "#/definitions/abc"
        }
      },

这是解析它的代码。

    SwaggerParser sparse = new SwaggerParser();
    Swagger swagger = sparse.read("swagger.json");

//下一行是我遇到的问题。 swagger.getPath(" / endpointurl&#34)。。。getGet()getResponses()得到(" 200&#34)。的getSchema();

此时," .getSchema()"在上面的行中只有" getType()"我可以打电话。它没有"得到$ ref()"。这是因为" .getSchema()"返回"属性" (io.swagger.models.properties.Property)。它没有"得到$ ref()"。

获取$ ref()可在" RefProperty" (io.swagger.models.properties.RefProperty)

但" .getSchema()"不会返回" RefProperty"。 Typecast" .getSchema()"的结果到" RefProperty"也没有用。它最终出现在这个错误中。 java.lang.ClassCastException:io.swagger.models.properties.ArrayProperty无法强制转换为io.swagger.models.properties.RefProperty

是否有人试过解析" swagger.json"并且能够在" schema"下检索" $ ref":行。在"响应"方框?

知道我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我想出办法来做到这一点。也许不是最好的方法,但它会在"#ref"中检索信息。

        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();

我不得不做几种类型的铸件。如果您有更优雅的方式,请在此处发布。