Wil*_* YK 7 .net c# json json.net
我正在尝试使用此方法创建一个使用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);
}
Run Code Online (Sandbox Code Playgroud)
如何摆脱过时的消息?听起来像代码已被移动到其他包/ dll,但以相同的方式调用/使用,我以某种方式引用过时的代码?这似乎我错过了一些简单/明显的东西.
编辑:这是一个可能有用的图像.
Wil*_* YK 12
我终于创建了一个新项目并复制/粘贴了他们的例子,我看到了我一直在与之斗争的痛苦明显的错误.
我应该用:
JSchema
而不是
JsonSchema
当我在搜索“JSON.net schema”后添加一个新的 NuGet 包时,我的问题得到了解决,这导致在选项中显示另一个 Newtonsoft.Json.Schema 包:
工具 > Nuget 包管理器 > 管理解决方案的 Nuget 包
完成此操作后,将JSONSchema对象更改为JSchema对象。这将删除过时的消息并正确编译代码。
后:
string schemaJson = @"{
'description': 'A person',
'type': 'object',
'properties':
{
'name': {'type':'string'},
'hobbies': {
'type': 'array',
'items': {'type':'string'}
}
}
}";
Run Code Online (Sandbox Code Playgroud)
改变:
JsonSchema schema = JsonSchema.Parse(schemaJson);
Run Code Online (Sandbox Code Playgroud)
到
JSchema schema = JSchema.Parse(schemaJson);
Run Code Online (Sandbox Code Playgroud)