gpt4 book ai didi

c# - 如何使用 JSON.net 引用外部文件?

转载 作者:太空宇宙 更新时间:2023-11-03 10:42:42 24 4
gpt4 key购买 nike

这是我在 JSON.net 尝试读取我的 JSON 架构时遇到的错误(return JsonSchema.Read(new JsonTextReader(reader));):

2014-07-15 15:33:42.7011 [Fatal] Newtonsoft.Json.JsonException: Could not resolve schema reference 'data-result.json'.
at Newtonsoft.Json.Schema.JsonSchemaBuilder.ResolveReferences(JsonSchema schema) in c:\Development\Releases\Json\Work
ing\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs:line 139
at Newtonsoft.Json.Schema.JsonSchemaBuilder.ResolveReferences(JsonSchema schema) in c:\Development\Releases\Json\Work
ing\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs:line 179
at Newtonsoft.Json.Schema.JsonSchemaBuilder.Read(JsonReader reader) in c:\Development\Releases\Json\Working\Newtonsof
t.Json\Src\Newtonsoft.Json\Schema\JsonSchemaBuilder.cs:line 85
at Newtonsoft.Json.Schema.JsonSchema.Read(JsonReader reader, JsonSchemaResolver resolver) in c:\Development\Releases\
Json\Working\Newtonsoft.Json\Src\Newtonsoft.Json\Schema\JsonSchema.cs:line 280
at Newtonsoft.Json.Schema.JsonSchema.Read(JsonReader reader) in c:\Development\Releases\Json\Working\Newtonsoft.Json\
Src\Newtonsoft.Json\Schema\JsonSchema.cs:line 266
at ThinkBinary.SchemaToPoco.Core.JsonSchemaToCodeUnit.LoadSchema(String file) in c:\Users\SLiu\Projects\json-schema-t
o-poco\Source\ThinkBinary.SchemaToPoco.Core\JsonSchemaToCodeUnit.cs:line 70
at ThinkBinary.SchemaToPoco.Core.JsonSchemaToCodeUnit..ctor(String schemaDocument, String requestedNamespace) in c:\U
sers\SLiu\Projects\json-schema-to-poco\Source\ThinkBinary.SchemaToPoco.Core\JsonSchemaToCodeUnit.cs:line 19
at ThinkBinary.SchemaToPoco.Console.Program.Main(String[] args) in c:\Users\SLiu\Projects\json-schema-to-poco\Source\
ThinkBinary.SchemaToPoco.Console\Program.cs:line 38

我的 JSON 模式:

{
"$schema": "http://json-schema.org/draft-03/schema#",
"title": "DataSet",
"description": "A result set and description of measures and values",
"type": "object",
"properties": {
"results": {
"$ref": "data-result.json"
},
"dimensions": {
"type": "array",
"description": "An array of data dimensions included in a result set",
"items": {
"$ref": "data-dimension.json"
},
"uniqueItems": true
},
"measure": {
"$ref": "data-measure.json",
"description": "single measure represented in this data set."
}
},
}

我的问题是我有这个 JSON 架构,其中引用了一个外部文件 data-result.json,但 JSON.net 还不知道它的存在。有什么办法可以解决这个问题吗?我的一个想法是浏览模式,如果有任何对外部文件的引用,则解析那些具有公共(public) JsonSchemaResolver 的文件。 .我必须适本地添加 ID,因为看起来 $ref 喜欢通过 ID 进行匹配,即使在 json-schema.org 上,也有明显的 $ref 示例file names 一起使用.我想知道是否有更好的方法让 JSON.net 原生支持引用外部模式。

源代码托管在 Github 上,如果有帮助的话。我已经在移除 $ref 字段的情况下进行了测试,并且编译成功。

最佳答案

Json.NET Schema 大大改进了对解析外部引用的支持。

在这里阅读更多:http://www.newtonsoft.com/jsonschema/help/html/LoadingSchemas.htm

关于c# - 如何使用 JSON.net 引用外部文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24768479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com