2016-05-23 6 views
1

私は、定義セクションをより良く生成し、整理したいと思っています。これは、定義の深さを増やすことができないことを意味しますが、ツリーは、定義セクションに独自のエントリを持ち、$ refで参照される必要があります。これは、各定義に対してプリミティブ型(文字列、ブール値など)であるか、別のカスタムクラスの別の定義エントリへの$ refであるプロパティのリストしか持たないことを意味します。 C#でクラスが最初に定義された方法に近い、深さ1の定義としてこれを見ることもできます。簡単な例を介してこれを説明するためNewtonsoft.Json.Schema.Generation:人間が読める「定義」セクション

  JSchemaGenerator schemaGenerator = new JSchemaGenerator(); 
      schemaGenerator = new JSchemaGenerator() 
      { 
       DefaultRequired = Newtonsoft.Json.Required.DisallowNull, 
       SchemaIdGenerationHandling = SchemaIdGenerationHandling.TypeName, 
       SchemaLocationHandling = SchemaLocationHandling.Definitions, 
       SchemaReferenceHandling = SchemaReferenceHandling.Objects, 
      }; 
      JSchema schema = schemaGenerator.Generate(typeof(Setting)); 

がレンダリング:

{ 
    "id": "Setting", 
    "definitions": { 
    "SubSetting": { 
     "id": "SubSetting", 
     "type": "object", 
     "properties": { 
     "SubSubSetting": { 
      "id": "SubSubSetting", 
      "type": "object", 
      "properties": { 
      "String": { 
       "type": "string" 
      } 
      } 
     } 
     } 
    }, 
    "SubSubSetting": { 
     "$ref": "SubSubSetting" 
    } 
    }, 
    "type": "object", 
    "properties": { 
    "SubSetting": { 
     "$ref": "SubSetting" 
    }, 
    "SubSubSetting": { 
     "$ref": "SubSubSetting" 
    } 
    } 
} 

したがって、SubSubSetting定義はインラインSubSetting定義が配置され、後我々はインライン定義への参照としてSubSubSettingを定義しています。これは複雑なデータ構造にとっては避けたいものですが、実際にはわかりにくくなり、データ注釈とJsonPropertyに基づいて、生き生きとして自動生成されたドキュメントの一部としてスキーマを提供したいと考えています。

JSchemaGeneratorを使用してこれを行うにはどうすればよいですか?

多分私はこれをしてはいけませんが、2番目の非常に短い質問です:それらは$refは構文的に正しいですか?彼らは"#/definitions/SubSetting"のように見えるべきではありませんか?

答えて

関連する問題