从JsonContract读取JSON属性名称

时间:2015-12-03 11:07:18

标签: c# .net json json.net

我有一个序列化为JSON的DTO。我需要知道属性的名称,因为它将出现在JSON中。我有适当的IContractResolver,但我不知道如何从这个到最终的属性名称。

我使用了GetResolvedPropertyName,这是一个开始但不是结束。例如,因为它需要一个字符串作为参数,所以它无法查找,例如JsonPropertyAttribute在酒店。可能还有其他情况,它没有完成整个工作。

如果我有PropertyInfoContractResolver,我怎样才能获得最终的属性名称?

1 个答案:

答案 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);
}

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