2017-04-19 12 views
2

無効なオブジェクトに変換し、しかし、それはしません。 IdでもListフィールドも、元のJSON(たとえIdフィールドが必須であるにもかかわらず)に存在するかどうかをチェックしていません。 JSONにランダムなプロパティを追加すると、実際に例外がスローされます。C#JsonConvertは、私は単純なクラスを作成している

どうすればこのテスト(そのまま)が合格するという意味でJsonConvertが厳しいですか? (リストが定義されていないので)

  • { name: "aa", list: null }に失敗 - - (何のidが定義されていないので)
  • { id: 0, name: "", list: null }に失敗 -
  • を渡す

    • { id: 1, name: "aa" }:正確な私は期待されるように

    +1

    [jsonスキーマ](http://www.newtonsoft.com/jsonschema)を使用してjsonに関するルールを設定する方法はありますか? –

    答えて

    2

    私はあなたが間違った方法で必要なプロパティを指定していると言います。

    あなたはRequired propertyの代わりRequired属性を持つJsonProperty attributeを使用する必要があります。例えば

    public class TestObject 
    { 
        // Id has to be present in the JSON 
        [JsonProperty(Required = Required.Always)] 
        public int Id { get; } 
    
        // Name is optinional 
        [JsonProperty] 
        public string Name { get; } 
    
        // List has to be present in the JSON but may be null 
        [JsonProperty(Required = Required.AllowNull)] 
        public List<string> List { get; } 
    } 
    

    RequiredプロパティはNewtonsoft.Json.Required enumから一定に設定することができます。

    JsonPropertyAttribute class documentationを確認してください。

    exampleを公式ドキュメントで確認することもできます。

    +0

    Phillのソリューションもおそらく動作しますが、これには脱塩器を変更する必要はありません。ありがとうございました –

    関連する問題