簡體   English   中英

Newtonsoft JSON模式比較包含對象類型

[英]Newtonsoft JSON schema compare containing object type

我有一個如下所述的模型。

public class QueryValueDataModel
{
    public object Value { get; set; }
    public QueryValueType ValueType { get; set; }
}

我有QueryValueDataModel類型的JSON序列化:

{
   "Value": 100,
   "ValueType": 0
}

當我將JSON對象的架構與QueryValueDataModel架構進行比較時

var obj = JToken.Load(reader); 

IList<ValidationError> errorMessages = new List<ValidationError>();
SchemaExtensions.IsValid(obj, schema, out errorMessages)

我收到一個錯誤,架構不匹配:

Invalid type. Expected Object, Null but got Integer

如何處理這種情況並使模式比較起作用? 或者,是否有一些解決方法?

您可以使用JSchemaGenerator從任何對象創建JSchema並將其與JObject.IsValid()方法進行比較

JSchemaGenerator generator = new JSchemaGenerator();
JSchema schema = generator.Generate(typeof(QueryValueDataModel));
JObject o = JObject.Parse(jsonstr);
if(o.IsValid(schema))
{
    QueryValueDataModel deserialized = o.ToObject(typeof(QueryValueDataModel));
}
else
{
    throw new Exception("schema dosn't match");
}

請注意! JSchemaGenerator已移至Newtonsoft.Json.Schema nuget包。

在此處輸入圖片說明

暫無
暫無

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

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