问题标签 [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 投票
1 回答
1361 浏览

c# - 根据集合属性名为集合中的对象生成C#类名

我正在尝试使用 NJsonSchema 生成 C# 类,但它正在为数组“anonymous_”中的对象命名类。

例如,这个 json 模式片段

生成此 C# 属性和类

想知道是否有一种方法可以强制 NJsonSchema 根据集合名称的单数化版本来命名集合中的对象(例如,在这种情况下,我希望将anonymous类命名为类似的名称,Identifier因为该类描述了名为 的集合中的对象Identifiers)。我已尝试为此使用自定义 TypeNameGenerator,但未向该Generate函数提供集合的名称。

0 投票
2 回答
422 浏览

c# - 如何强制不存在的属性为空?

如果我有如下架构:

我正在使用以下代码生成一组 C# 类:

并且,使用生成的类,执行以下操作:

然后反序列化完成而没有错误,但生成的对象o包含对object1object2的引用,尽管object2的所有成员都是空的。

我需要的是object2要么不存在于反序列化对象中,要么设置为 null。有没有办法做到这一点,无论是在模式本身还是在这个管道中涉及的各种进程之一?

0 投票
2 回答
1236 浏览

c# - JSON 模式到 C#

我正在寻找一个类或工具来将 JSON 模式转换为 C# 类作为预构建步骤。

我找到了几个“自制”解决方案(jsonschema.net、NJsonSchema、...),但更愿意使用一些与公司/项目相关的成熟/官方代码。我知道 Newtonsoft.json.Schema 包只能反过来(C# Class -> JSON)

我惊讶地发现 Visual Studio 能够使用“编辑 -> 选择性粘贴 -> 将 JSON 粘贴为类”开箱即用地执行此操作。此功能背后的代码/类/可执行文件/dll 在预构建步骤中是否可以通过编程方式访问?

0 投票
1 回答
873 浏览

c# - NJsonSchema:带有嵌套数组的 JSON 模式生成不正确的 C# 类型

我想使用 NJsonSchema 生成 C# 类。问题是对于嵌套数组,类型最终看起来像这样:

System.Collections.ObjectModel.ObservableCollection<System.Tuple<System.Linq.Enumerable+WhereSelectEnumerableIterator2[NJsonSchema.JsonSchema4,System.String]>>

我用于生成类的测试代码如下所示:

我有两个 JSON 模式文件,还有定义文件(Def1.json):

还有一个使用定义文件的单独模式:

我是否错误地使用了图书馆?

0 投票
1 回答
1522 浏览

c# - 如何在 NJsonSchema c# 中使用 json 模式验证 json

作为合同测试的一部分,我必须针对文件中存在的 json-schema 验证从 rest-endpoint 获得的 json 响应。我正在使用 NJsonSchema 并且无法执行此操作。

文件中的 Json-schema 如下所示

我必须验证的 Json 如下所示

任何人都可以对如何使用 NJsonSchema 或 Manatee.Json 使用 jsonschema 验证 json 进行一些说明(带有示例)。

0 投票
1 回答
1150 浏览

json - 使用 NJsonSchema 在单元测试中解析 JSON $ref

我已将我的 JSON 模式拆分为多个文件,并根据需要以标准方式 ( "$ref": http://rootpath/otherfile.json#/definitions/link) 引用它们。

JSON 文件是项目中的嵌入资源。这些rootpath变化取决于它的部署位置。但是在生产中一切正常(发出请求,获得 JSON 响应作为模式,当针对模式 NJsonSchema 验证响应时,内部获取参考模式并提取完成验证所需的内容)

但是,当涉及到测试时,情况就不同了。响应很好,并且第一个模式被删除了。这rootpath是这样的,一切都是相对的,http://testapi/但实际上并不存在。因此,当 NJsonSchema 尝试获取参考架构时,它会查找类似 的http://testapi/otherfile.json#/definitions/link内容,这显然失败了。

通过阅读本文,我想我想使用重载来获取JsonSchema4允许我指定 JsonReferenceResolver 的对象,然后我可以在生产中使用默认值并注入我自己的进行测试,以便它在$ref我的某个地方查找 s控制并且将存在。但我看不到任何关于此的文档或示例。

示例模式:

示例响应:

验证码(C#):

0 投票
0 回答
229 浏览

njsonschema - 如何控制 NJsonSchema 的小数输出

我有一个像这样的 C# 对象:

我创建了一个像这样的 json 模式:

如何防止属性“格式”:“十进制”在结果模式中输出?

编辑添加:不修改类 Foo - 我无权访问它。

0 投票
2 回答
895 浏览

c# - NJsonSchema:如果我知道我的模式中的一个字段在运行时只能有几个有限值,我可以将它添加到我的验证逻辑中吗?

以他们的 GitHub为例,如果我在运行时知道名字只能是“Bob”或“Bill”,我可以对此进行验证吗?

0 投票
0 回答
789 浏览

c# - 验证 JsonSchema 本身。它是正确的 JSON 模式吗?

注意!我不想针对 JSON Schema 验证 JSON!

我有 2 个 JSON 文件:

1. JSON Schema 文件:

2. JSON 文件:

如果这两个文件可以用作 JSON Schema,我想验证它们。

例如:

我努力了:

1)JSchema schema = JSchema.Parse(stringSchema); // It parses without any exception, and Valid property is null

2) James Newton-Kings 的回答

不走运,我如何验证 JSON Schema 本身?

0 投票
1 回答
1083 浏览

c# - NJsonSchema - C# 代码生成器不输出命名空间

我有一系列我试图输出到 POCO 的 JSON 模式文件,并NJsonSchema.CodeGeneration.CSharp为此目的加载了库。在为模型指定命名空间时,看起来命名空间实际上并没有被输出到生成的代码文件中。正在编写 POCO,但对象周围没有命名空间声明。我希望namespace MyApp.DataModels每个文件中都有一个。我究竟做错了什么?

以下是相关的代码: