Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从JsonContract读取JSON属性名称_C#_.net_Json_Json.net - Fatal编程技术网

C# 从JsonContract读取JSON属性名称

C# 从JsonContract读取JSON属性名称,c#,.net,json,json.net,C#,.net,Json,Json.net,我有一个DTO,它被序列化为JSON。我需要知道属性的名称,因为它将出现在JSON中。我有相应的IContractResolver,但我不确定如何从这个到最终的属性名 我使用了GetResolvedPropertyName,这是一个开始,但不是结束。例如,由于它以字符串作为参数,因此无法在属性上查找,例如JsonPropertyAttribute。在其他情况下,它可能无法完成全部工作 如果我有PropertyInfo和ContractResolver,如何获得最终属性名?我不知道为什么需要这样做

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

我使用了
GetResolvedPropertyName
,这是一个开始,但不是结束。例如,由于它以字符串作为参数,因此无法在属性上查找,例如
JsonPropertyAttribute
。在其他情况下,它可能无法完成全部工作

如果我有
PropertyInfo
ContractResolver
,如何获得最终属性名?

我不知道为什么需要这样做,但是,假设您的
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);
}
小提琴: