2017-08-28 38 views
0

我正在寻找一个C#库,它将根据给定的JSON架构生成有效的JSON对象。我想产生一个非常简单的JSON样品就像Swagger是怎么做的:用于将json架构转换为示例JSON的C#库

enter image description here

我已经看到了一些JavaScript库一样JSON Schema Faker,但我需要一个C#/。NET图书馆,在那里我可以生成。在我的后端代码中示例JSON。

+0

我写了一个简单的,我只是需要找到一种使它成为OSS的方法。简单的工作并不难。让我看看是否可以得到一小段代码,以帮助您开始。 –

+0

非常感谢。 –

+0

*要求我们推荐或查找书籍,工具,软件库,教程或其他非本地资源的问题是堆栈溢出* – I4V

回答

2

好吧,它是非常简单的,并没有考虑到JSON模式的许多因素,但它可能是一个很好的起点。它也取决于Newtonsoft的JsonSchema库。

public class JsonSchemaSampleGenerator 
    { 
     public JsonSchemaSampleGenerator() 
     { 
     } 

     public static JToken Generate(JsonSchema schema) 
     { 
      JToken output; 
      switch (schema.Type) 
      { 
       case JsonSchemaType.Object: 
        var jObject = new JObject(); 
        if (schema.Properties != null) 
        { 
         foreach (var prop in schema.Properties) 
         { 
          jObject.Add(TranslateNameToJson(prop.Key), Generate(prop.Value)); 
         } 
        } 
        output = jObject; 
        break; 
       case JsonSchemaType.Array: 
        var jArray = new JArray(); 
        foreach (var item in schema.Items) 
        { 
         jArray.Add(Generate(item)); 
        } 
        output = jArray; 
        break; 

       case JsonSchemaType.String: 
        output = new JValue("sample"); 
        break; 
       case JsonSchemaType.Float: 
        output = new JValue(1.0); 
        break; 
       case JsonSchemaType.Integer: 
        output = new JValue(1); 
        break; 
       case JsonSchemaType.Boolean: 
        output = new JValue(false); 
        break; 
       case JsonSchemaType.Null: 
        output = JValue.CreateNull(); 
        break; 

       default: 
        output = null; 
        break; 

      } 


      return output; 
     } 

     public static string TranslateNameToJson(string name) 
     { 
      return name.Substring(0, 1).ToLower() + name.Substring(1); 
     } 
    } 
+0

非常感谢。正是我需要去的。 –