【问题标题】:CamelCase property names with NJsonSchema C# CodeGeneration使用 NJsonSchema C# CodeGeneration 的 CamelCase 属性名称
【发布时间】:2023-02-10 03:15:45
【问题描述】:

有人知道配置 NJsonSchema 以在代码生成过程中使用 CamelCase 属性命名的方法吗?我有一个 JSON 模式,其属性名称如 message_id 导致 C# 属性名称“Message_id”,其中“MessageId”应该是更像 C# 的方式。

使用像 '[JsonProperty("message_id"]' 这样的属性,指定不同名称之间的连接就没有问题了。

【问题讨论】:

    标签: .net-core json.net njsonschema


    【解决方案1】:

    因此,您询问了代码生成。我遇到了它生成的模式与发送到我的 Angular 应用程序的内容不匹配的问题。因此,虽然这不是您要找的东西,但也许它可以帮助您找到答案(也许?)。

    为了使用驼峰式属性名称生成架构,我将默认属性名称处理设置为驼峰式,但这是使用已弃用的调用来直接设置这些设置。应该有一些方法可以直接使用 SerializerSettings,但我不太能够做到这一点。这不是我的生产代码,所以它会做。

    internal class SchemaFileBuilder<T>
    {
        public static void CreateSchemaFile()
        {
            CreateSchemaFile(typeof(T).Name);
        }
    
        public static void CreateSchemaFile(string fileName)
        {
            JsonSchemaGeneratorSettings settings = new JsonSchemaGeneratorSettings();
            settings.DefaultPropertyNameHandling = PropertyNameHandling.CamelCase;
    
            var schema = NJsonSchema.JsonSchema.FromType<T>(settings);
            var json = schema.ToJson();
    
            Directory.CreateDirectory("Schemas");
    
            File.WriteAllText($"Schemas\{fileName}.schema.json", json);
        }
    }
    

    我将其设置为通用函数,因此我可以将多个模式传递给任一 createSchemaFile 函数。下面是一些示例调用,它们会生成一个 Person.schema.json 文件和一个 Persons.schema.json 文件:

    SchemaFileBuilder<Person>.CreateSchemaFile();
    SchemaFileBuilder<Dictionary<string, Person>>.CreateSchemaFile("Persons");
    

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 2019-10-25
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多