我有一个序列化为JSON的DTO。我需要知道属性的名称,因为它将出现在JSON中。我有适当的IContractResolver
,但我不知道如何从这个到最终的属性名称。
我使用了GetResolvedPropertyName
,这是一个开始但不是结束。例如,因为它需要一个字符串作为参数,所以它无法查找,例如JsonPropertyAttribute
在酒店。可能还有其他情况,它没有完成整个工作。
如果我有PropertyInfo
和ContractResolver
,我怎样才能获得最终的属性名称?
答案 0 :(得分:1)
我不确定为什么你需要这样做,但是,假设你的IContractResolver
来自DefaultContractResolver
,你可以获得属性名称像这样:
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);
}