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

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,但以相同的方式调用/使用,我以某种方式引用过时的代码?这似乎我错过了一些简单/明显的东西.

编辑:这是一个可能有用的图像.

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

Wil*_* YK 12

我终于创建了一个新项目并复制/粘贴了他们的例子,我看到了我一直在与之斗争的痛苦明显的错误.

我应该用:

JSchema

不是

JsonSchema

  • 对于任何计划使用“JSchema”的人 - 请注意,它不能免费用于商业用途。Json.NET 是在 MIT 许可证下发布的,而 Json.NET Schema 使用 AGPL 许可证(他们特别指出“拥有超过 10 名员工的公司或法人实体必须购买商业计划”。https://www.newtonsoft.com/ json模式 (2认同)

Gan*_*zy' 5

当我在搜索“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)