C# 使用Json转换器向字典添加属性

C# 使用Json转换器向字典添加属性,c#,json,dictionary,json.net,C#,Json,Dictionary,Json.net,我正在通过JArray.Parse()将一些JSON端点反序列化为C#对象,遇到了一个我不确定如何处理的模式。下面的NunAvailResreasonMap对象具有动态数量的名称/值对;所有名称值都将是整数: { "id": "Customer Service", "operation": "UPDATE", "VoiceIAQStats": { "id": 139, "esdId": 139, ... "n

我正在通过JArray.Parse()将一些JSON端点反序列化为C#对象,遇到了一个我不确定如何处理的模式。下面的NunAvailResreasonMap对象具有动态数量的名称/值对;所有名称值都将是整数:

{
    "id": "Customer Service",
    "operation": "UPDATE",
    "VoiceIAQStats": {
        "id": 139,
        "esdId": 139,
        ...
        "nUnavailResources": 2,
        "nUnavailResReasonsMap": {
            "4": 1,
            "9": 1
        },
        "nWorkResources": 0,
        "nSelectedResources": 0,
        ...
        "nSLAPercentageHighThreshold": 0
    }
}
下面是我的C#对象:


有什么方法可以实现这一点,或者我需要改变我的方法吗?

您根本不需要特殊的转换器,只需删除
不可用的ReasonsMaps
类,并使用
字典即可:

public class VoiceIaqStats
{
    //snip
    public Dictionary<int, int> NUnavailResReasonsMap { get; set; }
    //snip
}
公共类语音iaqstats
{
//剪断
公共字典nunavalresreasonsmap{get;set;}
//剪断
}
并且转换将开箱即用:

var result = JsonConvert.DeserializeObject<QueueStats>(json);
var result=JsonConvert.DeserializeObject(json);

是否有理由认为不可用的ReasonsMaps甚至需要存在?似乎您可以将字典本身放入VoiceIaqStats,直接将字典放入
VoiceIaqStats
中,就像这样:
public class VoiceIaqStats{public dictionary nunavalresreasonsmap{get;set;}…}
应该可以正常工作。看到了吗?是的,就是这样,谢谢你的帮助。
public class VoiceIaqStats
{
    //snip
    public Dictionary<int, int> NUnavailResReasonsMap { get; set; }
    //snip
}
var result = JsonConvert.DeserializeObject<QueueStats>(json);