尝试使用 JsonConvert.DeserisalizeObject <t>检查 json 文件中的正确参数



我正在使用ACE代码编辑器来收集Json并将其发送到我的应用程序。 一旦 Json 命中应用程序,我需要确保 json 中有某些键,所以我使用 JsonConvert.DeserisalizeObject<t> 来执行此操作。 方法如下:

    public void SubmitReport(string JsonStringSend)
    {
        try
        {
            ReportItem RptItem = JsonConvert.DeserializeObject<ReportItem>(JsonStringSend);
        }
        catch(err)
        {
            return View(err);
        }
    }

和:

public class ReportItem
{
    public Guid ReportID;
    public bool RequiresFilter;
    public string MimeType { get; set; }
    public string ExternalID { get; set; }
    public DateTime CreatedBy { get; set; }
    public string ExecutionScript { get; set; }
    public string ExecutionParameter { get; set; }
    public string ExecutionOrderBy { get; set; }
    public List<DynamicFilter> DynamicFilters { get; set; }
    public bool RequiresOrgID { get; set; }
    public QueryFilter ReportFilter { get; set; }
    public QueryRule ReportRules { get; set; }
    public List<QueryColumn> Columns { get; set; }
}

但是出于某种原因,即使我确定某些键不正确,它也会在捕获物上反弹。 我不了解正确的用法JsonConvert.DeserisalizeObject<t>吗? 或者,有没有更好的方法来执行此检查?

默认情况下,反序列化程序"尽力"反序列化对象。但是 JSon.NET 支持验证,"直接"的方式可能是JSon Schema:http://www.newtonsoft.com/jsonschema。

简单的案例可以直接用 JSon.NET 处理:

public class ReportItem
{
    [JsonProperty(Required = Required.Always)]
    public bool RequiresFilter;
    [JsonProperty(Required = Required.Always)]
    public string MimeType { get; set; }
    public DateTime CreatedBy { get; set; }
    public string ExecutionScript { get; set; }
    public string ExecutionParameter { get; set; }
    public string ExecutionOrderBy { get; set; }
    public bool RequiresOrgID { get; set; }
}

相关内容

  • 没有找到相关文章

最新更新