C#库,用于将JSON模式转换为示例JSON [英] C# library for converting json schema to sample JSON
问题描述
我正在寻找一个C#库,该库将基于给定的JSON模式生成一个有效的JSON对象.我想生成一个非常简单的JSON示例,就像 Swagger 那样做:
I'm looking for a C# library that will generate a valid JSON object based on a given JSON Schema. I'd like to produce a very simple JSON sample just like how Swagger does it:
我已经看到了一些JavaScript库,例如 JSON Schema Faker ,但是我需要一个C# /.Net库,可以在我的后端代码中生成示例JSON.
I've seen some JavaScript libraries like JSON Schema Faker, but I need a C#/.Net library where I can generate sample JSON in my backend code.
推荐答案
好,它非常简单,没有考虑JSON模式的许多因素,但对于您来说可能是一个足够好的起点.它还取决于Newtonsoft的JsonSchema库.
Ok, it is super simplistic and doesn't take into account many factors of JSON schema, but it might be a good enough starting point for you. It also depends on the JsonSchema library from Newtonsoft.
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);
}
}
这篇关于C#库,用于将JSON模式转换为示例JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!