Json.Net:JSchema到Jtoken的转换问题



下面是一个小片段:

foreach (KeyValuePair<string, JSchema> pair in dict)
{
JToken token = pair.Value;
string path = token.Path;
...       
}

JSchema类v2.0.0.0包含提供简单类型转换的隐式运算符。

public static implicit operator JToken (
JSchema s
)

JSchema对象可能包含以下内容:

{
"title": "Массив предупреждений",
"type": "array",
"items": {
"title": "Предупреждение",
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"title": "Уникальный идентификатор предупреждения",
"type": "string"
},
"element": {
"title": "Идентификатор атрибута данных",
"description": "Идентификатор атрибута данных в запросе, с которым связано предупреждение, может отсутствовать, если такая связь не установлена.",
"type": "string"
},
"title": {
"title": "Заголовок или название предупреждения",
"type": "string"
},
"description": {
"title": "Описание или полный текст предупреждения",
"type": "string"
}
},
"required": [
"id",
"title"
]
}
}           

但令牌变量始终为{}(空)。怎么了?

我还认为JToken转换会将JSON模式视为JSON对象。由于每个JSON模式本身都是JSON,因此这种用法对我们来说是有意义的

然而,该实现清楚地表明,向JToken的转换实际上创建了一个与当前模式相关联的JSON对象。类似地,来自JToken的转换访问相关联的模式。

就我个人而言,我觉得这种类型转换的使用令人困惑。

我们可以通过将模式重新解析为纯JSON:来解决这个问题

var json = JObject.Parse(schema.ToString());

相关内容

  • 没有找到相关文章

最新更新