簡體   English   中英

在C#中使用JSON模式驗證對象

[英]Validate object using json schema in C#

我正在嘗試使用json shema來驗證C#API中的傳入objet參數。 這是我的api proto:

void BuildSqlQueryFromSegment(JoinDefinition jsonDef);

JsonDefinition是一個復雜的對象,具有很多屬性。 屬性值相互依賴,這就是為什么不能在此處使用簡單的validateur屬性(如Required,Min,Max)的原因。

一種解決方案是傳遞一個字符串而不是類型對象:

void BuildSqlQueryFromSegment(string jsonDef) {
    // Check shema here, using Json.NET Schema
    // if ok, deserialize and get the JsonDefition object instance
}

我能夠很容易地實現這一點,但是我發現這種解決方案並不明智。

我正在尋找的是這樣的:

void BuildSqlQueryFromSegment([SchemaValidation('MySchemaResourceHere')] JoinDefinition jsonDef);

是否存在這種屬性? 如果沒有,我該如何實施? 如何處理傳入響應json字符串以檢查架構?

謝謝你的幫助。

首先,您需要從JoinDefinition類創建JsonSchema。

        JsonSchemaGenerator schemaGenerator = new JsonSchemaGenerator{ };
        var o = new JoinDefinition ();
        JsonSchema Objschema = schemaGenerator.Generate(o.GetType());

比從字符串中獲取Jsonschema

        JObject jObject= JObject.Parse(JsonString);

        bool valid = jObject.IsValid(Objschema);

如果JsonString模式與類json模式匹配,則返回true,否則返回false

您將必須使用以下名稱空間

       using Newtonsoft.Json;
       using Newtonsoft.Json.Linq;
       using Newtonsoft.Json.Schema;

暫無
暫無

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

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