向现有 json 模式添加额外字段并即时生成 c# 类

Posted

技术标签:

【中文标题】向现有 json 模式添加额外字段并即时生成 c# 类【英文标题】:Add extra fields to existing json schema and generate c# class on fly 【发布时间】:2021-12-16 17:27:56 【问题描述】:

我正在尝试在新的 json 模式文件中找到将额外字段添加到现有 json 模式的解决方案,并在 github 管道中生成它们,项目可以使用它们。但我不知道该怎么做。例如,下面的现有架构:

  
    type: 'object',
    required: [ 'product' ],
    additionalProperties: false,
    properties: 
      productName: 
      enum: [ 'product1', 'product2', 'product3' ],
      ,
      price:  type: 'int' ,
  ,
;

但是知道我想在附加 json 的属性中添加更多字段,我该怎么做?例如我现在需要product quantity,所以我可以编译两个json模式并形成一个完整的类。也可以从其他模式中引用定义,或者我总是必须分别定义它们。

如果您能帮助我,非常感谢。

【问题讨论】:

【参考方案1】:

我使用 js 和 Lodash 将两个方案文件合并为一个,它就像魔术一样。

const _ = require("lodash");

const schema = require('./schema.json');
const extention = require("./extentions.json", 'utf-8');
var newschema = _.merge(schema, extention);
const fs = require('fs') 
fs.writeFile("./newschema.json", JSON.stringify(newschema, null, 4), (err) =>

    if (err) throw err;
);

【讨论】:

以上是关于向现有 json 模式添加额外字段并即时生成 c# 类的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - 向现有实体添加新字段

如何在现有方法中添加一些生成的代码

向现有 Python 类添加函数的模式

将“额外数据”添加到 LINQ to SQL 生成的实体?

向 ModelForm 添加额外字段

向 ModelAdmin 表单添加额外字段