簡體   English   中英

Newtonsoft.Json.Schema.JsonSchema已經過時了?

[英]Newtonsoft.Json.Schema.JsonSchema is obsolete?

我正在嘗試使用此方法創建一個使用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

我終於創建了一個新項目並復制/粘貼了他們的例子,我看到了我一直在與之斗爭的痛苦明顯的錯誤。

我應該用:

JSchema

不是

JsonSchema

你確定你有這個dll嗎? ,您的問題似乎是這個JSON Schema驗證已被移動到自己的包中 ,請在此處查看更多信息:

http://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Schema.htm

希望這有幫助

我在搜索“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'}
    }
  }
}";

更改:

            JsonSchema schema = JsonSchema.Parse(schemaJson); 

            JSchema schema = JSchema.Parse(schemaJson); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM