下面是一个小片段:
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());