【问题标题】:NJsonSchema: JSON schemas with nested arrays generate incorrect C# typesNJsonSchema:带有嵌套数组的 JSON 模式生成不正确的 C# 类型
【发布时间】:2018-01-17 20:09:06
【问题描述】:

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

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

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

var schemaAsync = NJsonSchema.JsonSchema4.FromFileAsync(
    @"<myPath>/MyFile.json");

var schema = schemaAsync.Result;

var generator = new NJsonSchema.CodeGeneration.CSharp.CSharpGenerator(schema);
var file = generator.GenerateFile();

System.IO.File.WriteAllText(
    @"<myPath>/SomeClass.cs",
    file);

我有两个 JSON 架构文件,一个是定义文件 (Def1.json):

{
    "$schema": "http://json-schema.org/draft-04/schema#",

    "definitions": {
        "InnerList": {
            "description": "Only ever has 2 items",
            "type": "array",
            "items": [ 
                {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 0
                },
                {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 100,
                    "default": 0
                }
           ],
          "additionalItems": false
        },
        "OuterList": {
            "type": "array",
            "items": {
                "$ref": "#/definitions/InnerList"
            }
        },
    }
}

还有一个使用定义文件的单独架构:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "MySchema",
    "type": "object",
    "required": [ "OuterList" ],
    "properties": {
        "OuterList": { "$ref": "Def1.json#/definitions/OuterList" }
    },
    "additionalProperties": false
}

我是否错误地使用了库?

【问题讨论】:

    标签: c# jsonschema njsonschema


    【解决方案1】:

    此问题已在最新版本中修复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-06
      • 2016-10-23
      • 2017-11-25
      • 1970-01-01
      • 2016-12-12
      • 2017-09-26
      • 2019-02-25
      • 2022-01-20
      相关资源
      最近更新 更多