反序列化Web Api中Dictionary中的JSON:始终为空字符串

本文关键字:字符串 JSON Api Web Dictionary 中的 反序列化 | 更新日期: 2023-09-27 17:57:44

我有这样的JSON字符串:{"1":[1,3,5],"2":[2,5,6],"3":[5,6,8]}

我想把它发送到Web Api控制器,而不使用ajax请求进行更改:

$.ajax({ type: "POST", url: "Api/Serialize/Dict", data: JSON.stringify(sendedData), dataType: "json" });

在WebApi中,我有这样的方法:

[HttpPost]
public object Dict(Dictionary<int, List<int>> sendedData)
{
    var d1 = Request.Content.ReadAsStreamAsync().Result;
    var rawJson = new StreamReader(d1).ReadToEnd();
    sendedData=Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<int, List<string>>>(rawJson);
    return null;
}

但是rawJson总是空字符串。我不明白为什么?但d1.Length与JSON字符串中的相同。我不知道如何从d1中获取JSON字符串。。。

谢谢!

反序列化Web Api中Dictionary中的JSON:始终为空字符串

执行ajax调用时使用content-type参数而不是dataType:
$.ajax({ 
       type: "POST",
       url: "Api/Serialize/Dict", 
       contentType: "application/json; charset=utf-8", //!
       data: JSON.stringify(sendedData) 
});