2015-12-03 96 views
2

我有一個序列化爲JSON的DTO。我需要知道該屬性的名稱,因爲它將顯示在JSON中。我有適當的IContractResolver,但我不知道如何從這到最終的屬性名稱。從JsonContract讀取JSON屬性名稱

我用GetResolvedPropertyName,這是一個開始,但不是結束。例如,因爲它將一個字符串作爲參數,所以它不能查找例如JsonPropertyAttribute在物業上。可能還有其他情況下,它沒有完成全部工作。

如何獲得最終的屬性名稱,因爲我有PropertyInfoContractResolver

回答

1

我不知道我理解爲什麼你需要做到這一點,但是,假設你IContractResolverDefaultContractResolver派生,你可以得到的屬性名稱是這樣的:

JsonObjectContract contract = (JsonObjectContract)resolver.ResolveContract(typeof(DTO)); 
var dict = contract.Properties.ToDictionary(p => p.UnderlyingName, p => p.PropertyName); 

Console.WriteLine("Serialized property names will be: "); 
foreach (var kvp in dict) 
{ 
    Console.WriteLine(kvp.Key + " => " + kvp.Value); 
} 

小提琴: https://dotnetfiddle.net/RnwnRc

+0

我會在週一給你一個鏡頭,謝謝 – Puppy