我想解包一个JObject以查看它是否包含字段" categories"。 JObject就是这个(在类别中有一些不相关的数据。
{{
"categories": [
]
}}
我的尝试(命名包含类别jobj
的JObject):
var x = jobj.Value<double?>("categories");
我得到了这个例外:
{System.InvalidCastException: Cannot cast Newtonsoft.Json.Linq.JArray to Newtonsoft.Json.Linq.JToken.
at Newtonsoft.Json.Linq.Extensions.Convert[T,U](T token)
at Newtonsoft.Json.Linq.JToken.Value[T](Object key)
at xxx.JsonSchemaValidator.validateAgainstJsonSchema(JObject list, String schemaFilePath)}
它有点奇怪,它称之为JArray,但我很好,它是一个JArray,只是不明白为什么,因为这是它的使用方式的完整背景:
public static bool validateAgainstJsonSchema(JObject jobj, string schemaFilePath)
{
JSchema schema = JSchema.Parse(System.IO.File.ReadAllText(schemaFilePath));
var x = jobj.Value<double?>("categories");
IList<string> messages;
bool valid = jobj.IsValid(schema, out messages);
if (!valid)
throw new DataMisalignedException("Failed JSON schema validation: " + string.Join("\n", messages));
return valid;
}
validateAgainstJsonSchema
方法的调用如下:
JsonSchemaValidator.validateAgainstJsonSchema(parsedObject as JObject, "./JsonSchema/category-schema.json");
如何访问jobj
中的数据以检查它是否包含类别字段?