Newtonsoft.Json.Schema.JsonSchema已经过时了?

时间:2016-02-09 17:21:56

标签: c# .net json json.net

我尝试使用此方法创建一个使用Json架构验证Json字符串的方法:http://www.newtonsoft.com/json/help/html/JsonSchema.htm

它说该对象已经过时并移动到它自己的包中,因此我使用NuGet并安装包(Newtonsoft.Json.dllNewtonsoft.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,但是以相同的方式调用/使用,我以某种方式引用过时的代码?这似乎是我错过了一些简单/明显的东西。

编辑:这是一张可能有用的图片。

http://i.imgur.com/PWwpGRx.png

3 个答案:

答案 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软件包

enter image description here

完成此操作后,将 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);