C# JSON字符串到字典对象错误

C# JSON字符串到字典对象错误,c#,C#,我的C#程序中有以下代码,需要将json结构转换为字典 string json = @"[{""id"":""51851"",""name"":""test {""id"":""527"",""name"":""test1""}]"; var json_serializer = new JavaScriptSerializer(); Dictionary<string, object> dictionary = json_serializer.Deserialize

我的C#程序中有以下代码,需要将json结构转换为字典

string json = @"[{""id"":""51851"",""name"":""test {""id"":""527"",""name"":""test1""}]"; 
    var json_serializer = new JavaScriptSerializer();
    Dictionary<string, object> dictionary = json_serializer.Deserialize<Dictionary<string, object>>(json);

有人能帮我找出这有什么问题吗?

试试这个。不要使用
对象
动态
用于整数

Dictionary<string, dynamic> dictionary = json_serializer.Deserialize<Dictionary<string, dynamic>>(json)
Dictionary Dictionary=json\u序列化程序。反序列化(json)
正如Oliver提到的,去掉方括号。它用于数组。

此:
“[{”“id”“:”“518523721”“}]”是一个对象数组

拆下方括号,以便留下:

"{""id"":""518523721""}"
然后将其反序列化到
字典

编辑(基于下面的评论)

对于多个对象,JSON不正确。应根据需要反序列化以下JSON结构:

"{
    "51851" : { "id" : "51851", "name" : "test" },
    "527" : { "id" : "527", "name" : "test" }
}"

JSON表示对象数组,而不是字典

如果您的JSON不正确(您不打算在数组中使用),您可以删除方括号,您的代码应该可以工作

否则,将代码更改为反序列化的代码

var dictionaries = json_serializer.Deserialize<List<Dictionary<string, object>>>(json);

foreach (var dictionary in dictionaries)
{
    Console.WriteLine(dictionary["id"]); // 518523721
}
var dictionaries=json\u序列化程序。反序列化(json);
foreach(字典中的var字典)
{
Console.WriteLine(字典[“id]”);//518523721
}

这不会返回对象数组而不是字典吗?请不要在标题中添加标签信息。这里的标签系统非常擅长分类,不需要帮助。:-)请看。谢谢。马修是对的。您正在尝试将数组反序列化到字典中。看到这个答案:我使用的是.NET3.5,其中不支持动态。@user1357872哦,对了。只需去掉方括号。让我们知道这是否有效。不,杰伊·帕特尔。如果去掉方括号,我会得到无效的JSON原语错误。请检查Oliver的答案。我认为这个错误是由于
int
as
object
没有被序列化造成的。JSON结构可能不正确。对于单个元素,这将起作用。如果字符串json=@“{”id“:”51851“,”name“:”test{”id“:”527“,”name“:”test1“}”;您好,这仍然是可能的,您的json将需要更改,请参阅我的编辑。
var dictionaries = json_serializer.Deserialize<List<Dictionary<string, object>>>(json);

foreach (var dictionary in dictionaries)
{
    Console.WriteLine(dictionary["id"]); // 518523721
}