【问题标题】:Generate Json sample from Json Schema从 Json Schema 生成 Json 样本
【发布时间】:2020-09-09 06:37:02
【问题描述】:

我是 libarry Json.NET Schema 的用户,是否有通过给定 json 架构生成 json 样本的功能?

【问题讨论】:

标签: json.net


【解决方案1】:

我终于尝试了另一种方法得到结果,参考函数:

    /// <summary>
    /// Generate a random Json sample based on json schema
    /// </summary>
    /// <param name="schema"></param>
    /// <returns>a random Json sample</returns>
    public static JToken GenerateJsonSample(this JSchema schema)
    {
        JToken output;
        switch (schema.Type)
        {
            case JSchemaType.Object:
                var jObject = new JObject();
                if (schema.Properties != null)
                {
                    foreach (var prop in schema.Properties)
                    {
                        jObject.Add(LowerCaseFirstChar(prop.Key), GenerateJsonSample(prop.Value));
                    }
                }

                output = jObject;
                break;
            case JSchemaType.Object | JSchemaType.Null:
                var jObject2 = new JObject();
                if (schema.Properties != null)
                {
                    foreach (var prop in schema.Properties)
                    {
                        jObject2.Add(LowerCaseFirstChar(prop.Key), GenerateJsonSample(prop.Value));
                    }
                }

                output = jObject2;
                break;
            case JSchemaType.Array:
                var jArray = new JArray();
                foreach (var item in schema.Items)
                {
                    jArray.Add(GenerateJsonSample(item));
                }

                output = jArray;
                break;
            case JSchemaType.Array | JSchemaType.Null:
                var jArray2 = new JArray();
                foreach (var item in schema.Items)
                {
                    jArray2.Add(GenerateJsonSample(item));
                }

                output = jArray2;
                break;

            case JSchemaType.String:
                output = new JValue("string_sample");
                break;
            case JSchemaType.String | JSchemaType.Null:
                output = new JValue("nullable_string_sample");
                break;
            case JSchemaType.Number:
                output = new JValue(1.0);
                break;
            case JSchemaType.Integer:
                output = new JValue(1);
                break;
            case JSchemaType.Boolean:
                output = new JValue(false);
                break;
            case JSchemaType.Null:
                output = JValue.CreateNull();
                break;

            default:
                output = null;
                break;
        }

        return output;
    }

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

那么,您的调用代码将是:

var sampleJsonContent = yourJSchema.GenerateJsonSample().ToString();

【讨论】:

    猜你喜欢
    • 2018-09-23
    • 2015-03-07
    • 1970-01-01
    • 2014-03-20
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多