我尝试使用此方法创建一个使用Json架构验证Json字符串的方法:http://www.newtonsoft.com/json/help/html/JsonSchema.htm
它说该对象已经过时并移动到它自己的包中,因此我使用NuGet
并安装包(Newtonsoft.Json.dll
和Newtonsoft.Json.Schema.dll
是引用)并且具有:
using Newtonsoft.Json.Schema;
using Newtonsoft.Json.Linq;
public bool validateSchema(string _Json)
{
JsonSchema schema = JsonSchema.Parse(
@"{
'properties': {
[MySchemaHere]
}
");
JObject jobject = JObject.Parse(_Json);
return jobject.IsValid(schema);
}
如何摆脱过时的消息?听起来我觉得代码已被移动到另一个包/ dll,但是以相同的方式调用/使用,我以某种方式引用过时的代码?这似乎是我错过了一些简单/明显的东西。
编辑:这是一张可能有用的图片。
答案 0 :(得分:10)
我终于刚创建了一个新项目并复制/粘贴了他们的例子,我看到了我一直在与之抗争的明显错误。
我应该使用:
JSchema
和不
JsonSchema
答案 1 :(得分:1)
你确定你有这个dll吗? ,您的问题似乎是 JSON Schema验证已移至其自己的包,请在此处查看更多信息:
http://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Schema.htm
希望这个帮助
答案 2 :(得分:1)
当我在搜索“ JSON.net模式”之后添加了新的NuGet包时,我的问题得到解决,这导致在选项中显示另一个Newtonsoft.Json.Schema包:
工具> Nuget软件包管理器>管理解决方案的Nuget软件包
完成此操作后,将 JSONSchema 对象更改为 JSchema 对象。这将删除过时的消息并正确地编译代码。
之后:
parenthesis_status
更改:
string schemaJson = @"{
'description': 'A person',
'type': 'object',
'properties':
{
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
到
JsonSchema schema = JsonSchema.Parse(schemaJson);