问题标签 [njsonschema]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
212 浏览

c# - 为什么这个简单的 Json 模式在 NJsonchema 中无效?

我正在测试 NJsonschema,发现以下简单的 Json 模式无效。

原始架构是一个包含很多定义的大架构,其中一个定义(ResourceList)是一个包含很多其他定义的列表,但为了简化问题,我将整个架构简化为下面的 jsonschemastr,其中仅包含 4定义。

问题是如果 schema 定义了 ResourceList 中也包含的类型(ValueSet 或 CodeSystem),则整个 schema 将无效,但如果定义 ValueSet1 则没有问题,为什么?顺便说一句,我的架构是有效的,并使用其他 Json 架构工具进行了检查。

0 投票
3 回答
197 浏览

c# - 在具有用于测试的内部设置器的类中设置属性(C#)

我正在使用 NJsonSchema 来验证 JSON 输入。

我有一个小类,它采用ValidationError对象集合并使用每个验证错误的内容创建更多用户友好的错误消息。

我希望能够为这个类编写单元测试,但是我遇到了一个问题。我的类中的一个消息处理程序负责处理NotInEnumeration错误,为此它使用ValidationError 中保存Enumeration的对象内的属性JsonSchema4并创建格式良好的错误消息。

在为这个特定的处理程序编写测试时,我发现以下内容是非法的:

这是因为 Enumeration 属性有一个内部设置器。

我需要能够设置验证错误的枚举,因为对象需要传递给 ValidationError 的构造函数,然后由我的处理程序稍后读取,如下所示。

我无法使用 moq 模拟 JsonSchema4 对象,因为 moq 不允许模拟非虚拟方法。

本质上,细节并不是很重要,但我想知道是否有任何方法可以设置内部设置器,以便我可以在我的类中测试这个特定的方法。

0 投票
0 回答
152 浏览

njsonschema - 如何在我生成的 POCO 类上允许空属性?

使用 NJsonSchema.CodeGeneration,我可以输出 JSON 模式中定义的属性。但是,我注意到在生成的代码中,发生了一些事情:

  1. 所有属性都Required = Newtonsoft...DisallowNull定义了属性。

  2. 每个属性都设置为一个类的新实例。

例子:

问题

如何使生成的代码允许空值?这些不是 JSON 模式中的必需属性,初始化它们没有意义。另一方面,默认情况下初始化集合类很方便,因此可以迭代它们而不会引发异常(这也是集合的当前行为)。

0 投票
0 回答
331 浏览

.net - 如何使用 NJsonSchema 从类型构造函数生成 JSON 模式?

NJsonSchema用于从C#类型生成模式。

并尝试像这样生成:

但是生成器使用类属性而不是构造函数来生成模式。如何指定使用构造函数?

0 投票
1 回答
982 浏览

c# - 如何使用 NJsonSchema 更改属性的类型

我有一系列通用响应对象,它们返回一个抽象类的属性。NSwag 和 NJsonSchema 使用抽象类生成模式,这会产生问题。具体类很容易通过反射确定,但是,似乎没有一种干净的方法可以让 NJsonSchema 用适当的具体类型替换抽象类型。这样做的正确方法是什么?

NSwag 生成响应对象,AppResponseOfUser这很好,但是,它说该OriginalRequest属性是 AppRequestOfUser 并且它是抽象的。我想创建一个将这个 AppRequestOfUser 重新映射到 UserRequest 的 SchemaProcessor。像这样的东西:

不幸的是,NJsonSchema 似乎不是很灵活,并且没有明确的方法来做到这一点。我不想使用鉴别器属性。我想重新映射到适当的具体类型。

0 投票
0 回答
215 浏览

c# - 验证 json 以确定 NJsonSchema C# 中的帖子不足

给定一个由 swagger 构建的 json 模式,我想验证我的端点的 json 请求和响应。如果我的 json 数据没有架构中描述的所有非必需字段,则不会返回任何错误。如何修改/扩展行为以确定缺少该字段?

我反汇编了模式和验证器代码,但没有找到一种简单的方法来覆盖模式和验证器的行为。

var wholeSchema = JsonSchema.FromFileAsync("mypath\\myJson.json").GetAwaiter().GetResult(); var specificRequestSchema = wholeSchema.Definitions["specificRequest"]; var errors = specificRequestSchema.Validate(jsonData);

0 投票
0 回答
122 浏览

c# - JSchemaPreloadedResolver 有替代方案吗?

我正在尝试从 URL 解析 JSON 模式。我可以JSchemaPreloadedResolverNewtonsoft.Json.Schema库中使用它来执行此操作,但我不能使用这个库。还有其他选择吗?也许在NJsonSchema或任何其他图书馆?

0 投票
0 回答
161 浏览

angular - 扩展点或从 Liquid 模板访问 OpenApiDocument

我们生成的规范扩展(即x-isPrimaryKeyOpenApiDocument需要将它们添加ClassDecorators到我们的 Angular 模型中。

例如,如果是 Pk、Fk 和属性级别权限,我们会进行通信。

我成功地覆盖了File.liquid来自定义生成的模型。

我已经探索了TypeScriptFileTemplateModel但是_documentprivate.

.Liquid感谢您对文件模板变量的可发现性提供任何帮助。

具体来说,是否有能够从任何模板读取 OAS 3 components->以扩展模型生成的扩展点?schemas.Liquid

0 投票
0 回答
417 浏览

c# - NSwag 创建重复模型

我正在使用 NSwag 从我的控制器生成 OpenApi3 规范。我还使用 IDocumentProcessor 的自定义实现来生成控制器中不包含的模型。后处理器模型与控制器方法共享抽象类。IDocumentProcessor 中生成的模型似乎复制了抽象类。有没有办法避免这种情况?

我的 IDocumentProcessor :

从我所见,似乎添加了重复项,因为另一个类将抽象类作为通用约束

在此处输入图像描述

0 投票
0 回答
364 浏览

c# - NJsonSchema 对象验证

我无法验证从一个非常简单的模式开始的 json 字符串。这是我的对象类型:

这是我的测试:

我总是得到错误:

有人能帮我吗?json字符串应该如何组成?提前致谢