Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html swagger codegen:d+;模式和类型:“类型”;数组";_Html_Swagger - Fatal编程技术网

Html swagger codegen:d+;模式和类型:“类型”;数组";

Html swagger codegen:d+;模式和类型:“类型”;数组";,html,swagger,Html,Swagger,我是个招摇过市的新手。我已经使用swagger servlet从RESTAPI Java类生成了swagger.json文件。json文件显示了swagger 2.0(我假设这是2.0模式版本)。源文件中没有什么特别之处,只有@Api和一些@ApiOperation注释 然后我尝试使用swagger codegen cli(版本2.1.4和2.1.6-SNAPSHOT,最新版本)从JSON文件生成HTML输出。我在这两方面都得到了以下结果: reading from dsm_swagger.js

我是个招摇过市的新手。我已经使用swagger servlet从RESTAPI Java类生成了swagger.json文件。json文件显示了swagger 2.0(我假设这是2.0模式版本)。源文件中没有什么特别之处,只有@Api和一些@ApiOperation注释

然后我尝试使用swagger codegen cli(版本2.1.4和2.1.6-SNAPSHOT,最新版本)从JSON文件生成HTML输出。我在这两方面都得到了以下结果:

reading from dsm_swagger.json
[main] ERROR io.swagger.codegen.DefaultCodegen - unexpected missing property for name suppressed
[main] WARN io.swagger.codegen.DefaultCodegen - skipping invalid property {
    "type" : "array"
}
writing file /home/combs/dsm_swagger/./index.html
所以我得到了一个输出文件,但是标记为对象列表的任何类型都没有得到正确处理。这些似乎是有效的2.0构造

我还得到了关于无效转义字符的Jackson错误,因为它看到

"pattern": "\d+"
在文件中。我可以使用[0-9]来处理\d,但假设它应该按原样处理

有没有人见过这些特殊的问题,并且知道它们是否已经修复,或者在swagger codegen或源文件中有解决方法?swagger codegen是否正确处理v2.0规格?任何最新的信息或代码的指针将不胜感激

编辑: 正如在评论中提到的,通过在适当的位置使用“@JsonIgnore”和“@JsonProperty”并升级到swagger core的V1.5.6,我解决了无效属性和键入“array”消息的问题。以下是有关\d问题的示例:

"/v1/admins/{adminId}": {
  "put": {
    "tags": [
      "admins"
    ],
    "summary": "Update information about a particular admin, given its ID. The update information is passed in the POST body.",
    "description": "Longer notes about what this does",
    "operationId": "updateUser",
    "consumes": [
      "application/json"
    ],
    "produces": [
      "application/json"
    ],
    "parameters": [
      {
        "name": "adminId",
        "in": "path",
        "required": true,
        "type": "integer",
        "pattern": "\d+",
        "format": "int64"
      },
      {
        "in": "body",
        "name": "body",
        "required": false,
        "schema": {
          "$ref": "#/definitions/UserUpdateInfo"
        }
      }
    ],
    "responses": {
      "200": {
        "description": "successful operation",
        "schema": {
          "$ref": "#/definitions/UserInfo"
        }
      }
    }
  }
},
这是swagger core的精确输出,但swagger codegen出现以下故障:

 combs@dcombs-lap:~/dsm_swagger$ gen_file
 reading from dsm_swagger.json
 reading from dsm_swagger.json
 com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape 'd' (code 100)
   at [Source: dsm_swagger.json; line: 411, column: 27]
   at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1419)
   at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:508)
   at com.fasterxml.jackson.core.base.ParserMinimalBase._handleUnrecognizedCharacterEscape(ParserMinimalBase.java:485)
   at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._decodeEscaped(UTF8StreamJsonParser.java:2924)
   at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishString2(UTF8StreamJsonParser.java:2209)
   at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._finishString(UTF8StreamJsonParser.java:2165)
   at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.getText(UTF8StreamJsonParser.java:279)
   at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:224)
   at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeArray(JsonNodeDeserializer.java:262)
   at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:221)
   at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:218)
   at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:218)
   at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:218)
   at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:62)
   at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:14)
   at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3066)
   at com.fasterxml.jackson.databind.ObjectMapper.readTree(ObjectMapper.java:1861)
   at io.swagger.parser.SwaggerCompatConverter.readResourceListing(SwaggerCompatConverter.java:139)
   at io.swagger.parser.SwaggerCompatConverter.read(SwaggerCompatConverter.java:74)
   at io.swagger.parser.SwaggerParser.read(SwaggerParser.java:73)
   at io.swagger.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:317)
   at io.swagger.codegen.cmd.Generate.run(Generate.java:186)
   at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
Exception in thread "main" java.lang.RuntimeException: missing swagger input or config!
   at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:89)
   at io.swagger.codegen.cmd.Generate.run(Generate.java:188)
   at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
combs@dcombs-lap:~/dsm_swagger$ 

找到了答案。第一项关于“名称被抑制的缺失属性”的内容,我认为是指“我们抑制了缺失的“名称”属性”。实际上是“名为'supprested'的属性声明中缺少条目。原来它是一个类型:数组声明,但显然,在类型擦除之后,swagger codegen看到了列表。仍在寻找解决方案。另外,如果swagger是这样生成文件的,那么仍然没有找到\d被视为无效的原因。我认为将文件修改为使用\\d会起作用,但如果swagger生成正确的文件会更好。请共享您的swagger.json的输出?我通过适当使用“@JsonIgnore”和“@JsonProperty”并升级到使用swagger core的V1.5.6,修复了抑制错误和其他错误(我看到的所有在线参考资料都只提到V1.5.0)。我将附加swagger.json的相关部分(整个内容是10K+行)。由于转义是由Java编译器处理的,
\d
无效。它应该是字符串文本中的
\\d
,最终编译回
\d
。例如,在Java中,
字符串换行=“\n”
给出一个包含1个字符的字符串-换行符。
字符串反斜杠=“\\n”;
生成一个2个字符的字符串,
\n