Asp.net web api Web Api-返回字典

Asp.net web api Web Api-返回字典,asp.net-web-api,Asp.net Web Api,我无法将已填充的列表>实例从Web API控制器成功返回到C控制台应用程序。这里是细节 Web API代码: [HttpPost] public async Task<HttpResponseMessage> Get(IEnumerable<long> ids) { var results = [assume populated instance of List<StringDictionary>>]

我无法将已填充的
列表>
实例从Web API控制器成功返回到
C
控制台应用程序。这里是细节

Web API代码:

    [HttpPost]
    public async Task<HttpResponseMessage> Get(IEnumerable<long> ids)
    {
            var results = [assume populated instance of List<StringDictionary>>]

            return Request.CreateResponse<List<StringDictionary>>(HttpStatusCode.OK, results);

    }
我在这里遗漏了什么明显的事实


更新-有趣的是,如果我将StringDictionary更改为Dictionary,效果会很好。

区别在于反序列化。JSON反序列化程序无法反序列化正在发送的格式。如果只是尝试发送单个对象,则会出现以下错误:
无法创建和填充列表类型System.Collections.Specialized.StringDictionary。

这可以帮助你获得更多的理解

下面是序列化字典和字符串字典的JSON表示

字典

[
    {
        "1": "A",
        "4": "G"
    },
    {
        "1": "A",
        "3": "B"
    }
]
[
[
    {
        "_key": "4",
        "_value": "G"
    },
    {
        "_key": "1",
        "_value": "A"
    }
],
[
    {
        "_key": "3",
        "_value": "B"
    },
    {
        "_key": "1",
        "_value": "A"
    }
]
]
字符串字典

[
    {
        "1": "A",
        "4": "G"
    },
    {
        "1": "A",
        "3": "B"
    }
]
[
[
    {
        "_key": "4",
        "_value": "G"
    },
    {
        "_key": "1",
        "_value": "A"
    }
],
[
    {
        "_key": "3",
        "_value": "B"
    },
    {
        "_key": "1",
        "_value": "A"
    }
]
]