2016-09-28 11 views
0

jsonスキーマファイルの定義セクションの別の定義済みオブジェクトを参照するように、配列内のオブジェクトのタイプを設定するにはどうすればよいですか?私はこれをやってみました:JSON配列を定義済みの型に設定する方法は?

"definitions": { 
    "ObjectA": { 
     "title": "ObjectA", 
     "type": "object", 
     "properties": { 
      "description": { 
       "type": "string" 
      }, 
      "status": { 
       "type": "string" 
      }, 
     }, 
     "required": [ 
      "description", 
      "status" 
     ] 
    }, 
    "ObjectB": { 
     "title": "ObjectB", 
     "type": "object", 
     "properties": { 
      "objectalist": { 
       "type": "array", 
       "items": { 
        "type": { 
         "$ref": "#/definitions/ObjectA" 
        } 
       } 
      } 
     }, 
     "required": [ 
      "objectalist" 
     ] 
    } 
} 

とjsonエディタはそれは問題ないと思います。このスニペットは、闊歩のAPIの定義の一部であり、私はコード生成ツールを通してそれを実行したとき、私はこのエラーを取得する:

[main] ERROR io.swagger.codegen.DefaultCodegen - No Type defined for Property null 
Exception in thread "main" java.lang.RuntimeException: Could not process model 'ObjectB'.Please make sure that your schema is correct! 
     at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:297) 
     at io.swagger.codegen.cmd.Generate.run(Generate.java:223) 
     at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:36) 
Caused by: java.lang.NullPointerException 
     at io.swagger.codegen.languages.AbstractJavaCodegen.toModelName(AbstractJavaCodegen.java:400) 
     at io.swagger.codegen.languages.AbstractJavaCodegen.getSwaggerType(AbstractJavaCodegen.java:577) 
     at io.swagger.codegen.DefaultCodegen.getTypeDeclaration(DefaultCodegen.java:1119) 
     at io.swagger.codegen.languages.AbstractJavaCodegen.getTypeDeclaration(AbstractJavaCodegen.java:427) 
     at io.swagger.codegen.languages.AbstractJavaCodegen.toDefaultValue(AbstractJavaCodegen.java:440) 
     at io.swagger.codegen.DefaultCodegen.fromProperty(DefaultCodegen.java:1359) 
     at io.swagger.codegen.DefaultCodegen.addVars(DefaultCodegen.java:2738) 
     at io.swagger.codegen.DefaultCodegen.addVars(DefaultCodegen.java:2709) 
     at io.swagger.codegen.DefaultCodegen.addVars(DefaultCodegen.java:2695) 
     at io.swagger.codegen.DefaultCodegen.fromModel(DefaultCodegen.java:1284) 
     at io.swagger.codegen.languages.AbstractJavaCodegen.fromModel(AbstractJavaCodegen.java:601) 
     at io.swagger.codegen.DefaultGenerator.processModels(DefaultGenerator.java:875) 
     at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:290) 
     ... 2 more 

私はObjectBに変更した場合:

"ObjectB": { 
     "title": "ObjectB", 
     "type": "object", 
     "properties": { 
      "objectalist": { 
       "type": "array", 
       "items": { 
        "type": "string" 
       } 
      } 
     }, 
     "required": [ 
      "objectalist" 
     ] 
    } 

コード生成の作品を。定義された型に配列のオブジェクト型を設定する方法はありますか?

答えて

0

カスタムJSONタイプの定義に関する別の記事でその答えが見つかりました。答えは、同封の"type":を取り除くことです。したがって、次のようになります。

"ObjectB": { 
     "title": "ObjectB", 
     "type": "object", 
     "properties": { 
      "objectalist": { 
       "type": "array", 
       "items": { 
        "$ref": "#/definitions/ObjectA" 
       } 
      } 
     }, 
     "required": [ 
      "objectalist" 
     ] 
    } 
関連する問題