使用Dictionary将JSON传递给C#方法<;int,List<;int>&燃气轮机;作为参数

使用Dictionary将JSON传递给C#方法<;int,List<;int>&燃气轮机;作为参数,c#,jquery,json,C#,Jquery,Json,我无法将正确格式的JSON数据发送到此C#方法: .NET为我提供了一个“InvalidOperationException”,并显示以下消息: Type 'System.Collections.Generic.Dictionary is not supported for serialization/deserialization of a dictionary, keys must be strings or objects. 我尝试了快速逆向工程,得到了以下结果: Version=4.0

我无法将正确格式的JSON数据发送到此C#方法:

.NET为我提供了一个“InvalidOperationException”,并显示以下消息:

Type 'System.Collections.Generic.Dictionary is not supported for
serialization/deserialization of a dictionary, keys must be strings or objects.

我尝试了快速逆向工程,得到了以下结果:

Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[System.Collections.Generic.List`1[[System.Int32,mscorlib,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089],[mscorlib,Version=4.0.0.0.0,Culture=neutral,PublicKeyToken=B77A561934E089]]不支持字典的序列化/反序列化,键必须是字符串或对象

代码:

Dictionary dict=新字典{
{0,新列表{1,2},
{1,新列表{3,4}
};
var serializer=新的JavaScriptSerializer();
ViewBag.Message=serializer.Serialize(dict);
当您将其更改为Dictionary>时,它可以工作:

Json:{“0”:[1,2],“1”:[3,4]}

当然,如果需要,您可以稍后将这些字符串解析为int

希望有帮助:)

使用json转换器:

Dictionary<int, List<int>> dict = new Dictionary<int, List<int>>{
                {0, new List<int>{1,2}},
                {1, new List<int>{3,4}}
            };

var json = JsonConvert.SerializeObject(dict);
// json = {"0":[1,2],"1":[3,4]}
Dictionary dict=新字典{
{0,新列表{1,2},
{1,新列表{3,4}
};
var json=JsonConvert.SerializeObject(dict);
//json={“0”:[1,2],“1”:[3,4]}

所以您不应该对它有任何问题。

您使用的是什么序列化程序?如果您使用的是默认的.net序列化,我建议您使用JSON序列化程序,它可以处理字典序列化,并且比默认的更高效。当您使用ajax发送JSON对象时,请尝试以下链接:您可以用NewtonSoft JSON序列化程序替换默认的JavasScriptSerializer。谢谢。需要更改:
var-bar={“0”:[1,2],“1”:[3,4]}
公共bool提交的教育回复(int educationId、字典问题和答案)
Type 'System.Collections.Generic.Dictionary is not supported for
serialization/deserialization of a dictionary, keys must be strings or objects.
Dictionary<int, List<int>> dict = new Dictionary<int, List<int>>{
                {0, new List<int>{1,2}},
                {1, new List<int>{3,4}}
            };

            var serializer = new JavaScriptSerializer();

            ViewBag.Message = serializer.Serialize(dict);
Dictionary<int, List<int>> dict = new Dictionary<int, List<int>>{
                {0, new List<int>{1,2}},
                {1, new List<int>{3,4}}
            };

var json = JsonConvert.SerializeObject(dict);
// json = {"0":[1,2],"1":[3,4]}