2016-04-12 14 views
3

異なるケースの複数のプロパティ名がある場合、Json.NETがJSONオブジェクトを対応するC#オブジェクトに逆シリアル化する方法を理解したいと思います(これは良い方法ではありませんが、 JSON.NETがこれをどう扱うかを知るために)。異なるケースの同じプロパティ名を持つJson逆シリアル化

Iは、以下のように定義されたAC#オブジェクトを有する:私はJSON文字列の上に変換するJSON.NETデシリアライズ方法を使用する場合は、

{ "Name": "TestName","Isemployee":true, "isemployee":false}; 

として

public class TestModel 
{ 
    public string Name { get; set; } 
    public bool IsEmployee { get; set; } 
} 

とJSONオブジェクトをこれら2つのプロパティのうち1つをIsEmployee変数に割り当てるTestModelオブジェクト?なぜ?

ありがとうございました。

+0

IsemployeeとisemployeeはIsEmployeeと同じではないので、IsEmployeeはデフォルトのbool値であるため、falseになります –

+0

いいえ、isemployeをtrueにすると、trueと解析されます。 – Kiran

+0

[this](http://james.newtonking.com/archive/2009/03/21/json-net-3-5-beta-3-jsonserializer-improvements)非常に古い「リリースノート」、* Json正確な一致が失敗した場合、.NET *は大文字と小文字を区別しない一致を試みます。この機能が設定可能であるか、それとも有効であるかはわかりませんが、あなたが説明しているところからはそうであるようです。 IsemployeeとIsemployeeの順番を変更して、適用されたIsEmployee値に影響があるかどうかを調べます。私の推測では、最後の要素が優先されます。 –

答えて

1

逆シリアル化では、Json.NETは、前述のhereのように、完全一致が失敗した場合に大文字と小文字を区別しない属性の一致を試みます。これは組み込みの.NET JSONシリアライザとは対照的です。hereを参照してください。

複数の一致が検出された場合、最後の一致が優先されます。

関連する問題