Generator Json Schema .NET - 从文件加载外部引用

时间:2017-03-22 13:36:37

标签: .net json json.net jsonschema

我即将编写一个生成器,它将一个起始目录作为输入,并从该位置打开每个文件夹并创建连接的json模式。

File 1: ValidResponse.json
{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "ValidResponse",
    "type": "object",
    "properties": {
        "Head": {
            "type": "object",
            "CommonResponse": {"$ref":"CommonHeader.json"},
            "required":["CommonResponse"]
        },
        "Body": {
            "type": "object"
        }
    },
    "additionalProperties": false,
    "required":["Head","Body"]
}

File 2: CommonHeader.json
{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "CommonHeader",
  "type": "object",
  "properties": {
    "RequestArguments": {
      "type": "object",
      "properties": {
        "DataCollection": {
          "type": "string"
        },
        "DeviceClass": {
          "type": "string"
        },
        "Scope": {
          "type": "string"
        },
        "DeviceId": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Status": {
      "type": "object",
      "properties": {
        "Code": {
          "type": "integer"
        },
        "Reason": {
          "type": "string"
        },
        "UserMessage": {
          "type": "string"
        }
      },
      "additionalProperties": false,
      "required": [
        "Code",
        "Reason",
        "UserMessage"
      ]
    },
    "Timestamp": {
      "type": "string"
    }
  },
  "additionalProperties": false,
  "required": [
    "RequestArguments",
    "Status",
    "Timestamp"
  ]
}

现在我想要这个2文件是,加载文件1 - ValidResponse作为架构,在“$ ref ...”它应该加载文件2 - CommonHeader,因此创建一个大的json架构,同时能够仍然可以自己操作文件,而不必担心破坏整个代码。

我已经在使用Newtonsoft Nugget Package并且可以验证json架构,但引用部分只是不想工作

_jsonValidResponse = File.ReadAllText(_baseUri + @"\ObjectStructureOfValidResponse.json");
_jsonString = File.ReadAllText(_baseUri+@"\jsonstring.json");
JObject jsonString = JObject.Parse(_jsonString);
JSchema jsonSchemaValidResponse = JSchema.Parse(_jsonValidResponse);
jsonString.IsValid(jsonschemaValidResponse)

这里的“魔法”是什么让这个引用在运行时加载?

0 个答案:

没有答案