2017-10-14 2 views
1

Je suis en train d'utiliser l'analyseur fanfaronnades pour analyser et récupérer des informations dans le « swagger.json » (io.swagger.parser.SwaggerParser;)

Voici un extrait du "swagger.json". J'essaie de récupérer "$ ref": "#/definitions/abc".

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

Ceci est le code pour l'analyser.

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

// Cette ligne suivante est ce qui me pose problème. swagger.getPath ("/ endpointurl"). GetGet(). GetResponses(). Get ("200"). GetSchema();

À ce stade, le ".getSchema()" dans la ligne ci-dessus a seulement "getType()" que je peux appeler. Il n'a pas "get $ ref()". C'est parce que ".getSchema()" renvoie une "Propriété" (io.swagger.models.properties.Property). Il n'a pas "get $ ref()".

get $ ref() est disponible dans "RefProperty" (io.swagger.models.properties.RefProperty)

Mais ".getSchema()" ne retourne pas "RefProperty". Typecast le résultat de ".getSchema()" à un "RefProperty" ne fonctionne pas non plus. Il finit dans cette erreur. java.lang.ClassCastException: io.swagger.models.properties.ArrayProperty ne peut pas être jeté à io.swagger.models.properties.RefProperty

Quelqu'un at-il essayé l'analyse d'un « swagger.json » et a pu récupérer le " $ ref ": ligne sous" schéma "dans le bloc" réponse "?

Une idée comment pourrais-je être en mesure de faire cela?

Répondre

0

J'ai trouvé un moyen de le faire. Peut-être pas la meilleure façon de le faire, mais il récupère l'information dans "#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(); 

J'ai dû faire quelques castings de type. Si vous avez une façon plus élégante de le faire, veuillez poster ici.