C# 使用Json.Net序列化到键值字典中?

C# 使用Json.Net序列化到键值字典中?,c#,json,json.net,C#,Json,Json.net,你好,我正在尝试将一个对象序列化为散列,但我没有得到我想要的 代码: 然而,我想要的结果是: [{"foo":"bar"},{"biz":"baz"}] 我是如何让JSON变成这样的?在方法的最后一行尝试以下内容: string json=JsonConvert.serialized对象(l.ToDictionary(x=>x.Name,y=>y.Value)) 结果:{“foo”:“bar”,“biz”:“baz”} 对于结果:[{“foo”:“bar”},{“biz”:“baz”}]您可以

你好,我正在尝试将一个对象序列化为散列,但我没有得到我想要的

代码:

然而,我想要的结果是:

[{"foo":"bar"},{"biz":"baz"}]

我是如何让JSON变成这样的?

在方法的最后一行尝试以下内容:

string json=JsonConvert.serialized对象(l.ToDictionary(x=>x.Name,y=>y.Value))

结果:
{“foo”:“bar”,“biz”:“baz”}

对于结果:
[{“foo”:“bar”},{“biz”:“baz”}]
您可以这样做

string json=JsonConvert.SerializeObject(新对象[]{new{foo=“bar”},new{biz=“baz”})

string json=JsonConvert.SerializeObject(新对象[]{new Data1{foo=“bar”},new Data2{biz=“baz”})


第一个结果采用相同的数据类型,因此结果是同一数组的一部分。第二种是不同的数据类型,因此您可以获得不同的数组

您可以创建自己的键值列表 像

class mylist:Dictionary
{
}
var l=新的mylist();
l、 添加(“foo”、“bar”);

它应该能解决你的问题

@woohoo所以你是说它不是有效的JSON?在保持一般结构的同时,是否有任何方法使其有效?我个人认为您想要的是不正确的,在json.org上,请参见以下示例:只有为“foo”编写单独的类,为“baz”编写另一个类,才能实现您所需的格式。。。然后对List类进行更多的泛化,等等。但是,你违背了规则……我从未尝试过这样做——但是你是否尝试将数据放在字典上,然后尝试将其序列化为json?@woohoo——你应该发布一个答案,这样它才能被接受,因为你的建议就是Earlz使用的。这很有效!我最终没有使用
数据
类,而是序列化了
字典
或等待。其实没有。@Earlz,只是添加了不同的方法来获得预期的输出。有没有什么方法可以动态地做到这一点?取决于您的实际需要。你能序列化一个符合你需要的对象吗?您必须从字符串创建json吗?是的,这是可能的,但是实现取决于您的场景。
[{"Name":"foo","Value":"bar"},{"Name":"biz","Value":"baz"}]
[{"foo":"bar"},{"biz":"baz"}]
 class mylist:Dictionary<string,object>
{
}
var l=new mylist<Data>();
l.Add("foo","bar");