C# Json.Net:JSchema到Jtoken的转换问题
下面是一个小片段:C# Json.Net:JSchema到Jtoken的转换问题,c#,json.net,C#,Json.net,下面是一个小片段: foreach (KeyValuePair<string, JSchema> pair in dict) { JToken token = pair.Value; string path = token.Path; ... } JSchema对象可能包含如下内容: { "title": "Массив предупреждений", "type": "array", "items": { "title"
foreach (KeyValuePair<string, JSchema> pair in dict)
{
JToken token = pair.Value;
string path = token.Path;
...
}
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());
你能解释一下你想做什么并提供进一步的背景资料吗?我需要阅读JSchema obj中的Path属性。但它在JSchema类中是内部的。所以我尝试获取具有公共路径属性的JToken对象。您能告诉我们Jschema对象包含什么吗?当然。请看编辑后的帖子。
var json = JObject.Parse(schema.ToString());