2016-04-15 9 views
1

私はJsonスキーマ(JSchema)であるプロパティとしてオブジェクトを持っています。これはシリアル化されるときJSchemaを別のオブジェクトの一部としてシリアル化するにはどうすればよいですか?

JSchema aSchema; 

object foo = new {propA = "x", schema = aSchema}; 

しかし、:

string str = JsonConvert.SerializeObject(foo); 

JSchemaオブジェクトはそのToStringメソッドの出力のように、きれいなJSON Schemaの...そのすべての他のプロパティと一緒にしていないシリアライズされます()これはJsonスキーマ文字列を出力します。

このようなJSON Schemaオブジェクトとしてシリアル化スキーマプロパティは、私は何をしたいです:

{ 
    "propA": "x", 
    "schema": { 
     "id": "", 
     "description": "", 
     "definitions": { 
      "number": { 
       "type": "number" 
      }, 
      "string": { 
       "type": "string" 
      } 
     }, 
     "properties": { 
      "title": { 
       "title": "Title", 
       "type": "string" 
      } 
     } 
    } 
} 

あなたがこれをどのように行うのでしょうか?

+1

現在問題をより良く理解している出力を確認すると役に立ちます。 –

+0

JSON Schemaクラスを置くか、必要な出力を入れます。 –

答えて

0
public class Number 
{ 
    public string type { get; set; } 
} 
public class String 
{ 
    public string type { get; set; } 
} 
public class Definitions 
{ 
    public Number number { get; set; } 
    public String @string { get; set; } 
} 
public class Title 
{ 
    public string title { get; set; } 
    public string type { get; set; } 
} 
public class Properties 
{ 
    public Title title { get; set; } 
} 
public class Schema 
{ 
    public string id { get; set; } 
    public string description { get; set; } 
    public Definitions definitions { get; set; } 
    public Properties properties { get; set; } 
} 
public class RootObject 
{ 
    public string propA { get; set; } 
    public Schema schema { get; set; } 
} 

Serializeメソッド

dynamic coll = new 
{ 
    Root = new RootObject() 
    { 
     propA = "x",    
     schema = new Schema 
     { 
      id = "", 
      description = "", 
      definitions = new Definitions() 
      { 
       number = new Number() 
       { 
        type = "number" 
       }, 
       @string = new String() 
       { 
        type = "number" 
       } 
      }, 
      properties = new Properties() 
      { 
       title = new Title() 
       { 
        title = "Title", 
        type = "string" 
       } 
      } 
     } 
    } 
}; 

var output = JsonConvert.SerializeObject(coll); 

フィドラー:https://dotnetfiddle.net/f2wG2G

更新

var jsonSchemaGenerator = new JsonSchemaGenerator(); 
var myType = typeof(RootObject); 

var schema = jsonSchemaGenerator.Generate(myType); 
schema.Id = ""; 
schema.Description = ""; 
schema.Title = myType.Name; 

フィドラー:https://dotnetfiddle.net/FwJX69

+0

上記のようにカスタムオブジェクトからJson出力を作成する方法を理解しています。しかし、私が記事で述べたように、私は多くの他のプロパティなどを持つJSchemaオブジェクトを使って作業しています。 –

+0

JSONスキーマクラスを配置します。 –

関連する問題