2016-04-26 13 views
0

を使用して適切なパラメータのためのJSONファイルをチェックしようとしています。 JSONはアプリケーションに当たったら、私はこれを行うにはJsonConvert.DeserisalizeObject<t>を使用していますので、JSON内の特定のキーのがあることを確認する必要があります。ここに方法は次のとおりです。私はJSONを収集し、自分のアプリケーションに送信するACEコードエディタを使用してい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>?または、このチェックを行うより良い方法がありますか?

答えて

0

はデフォルトでは、デシリアライザは、オブジェクトをデシリアライズするために、「それは最高の試みます」。しかしJSon.NETはバリデーションをサポートしています。おそらくJSonスキーマはhttp://www.newtonsoft.com/jsonschemaです。

シンプルな場合は、直接JSon.NETで扱うことができます。これはちょうどJSONを検証し

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; } 
} 
+0

、それは特定のキーは、私は必要なものであるJSONであることを検証しません。 –

+0

あなたは必須フィールドを意味しますか?それはそれを検証します。 "required"を使用してください:http://tools.ietf.org/html/draft-fge-json-schema-validation-00#section-5.4.3 – Nikolay

+0

私はすでにモデルを構築していたので、スキーマも作成します。私はモデルを使ってそれに基づいて検証することができると思った。 –

関連する問題