使用Json.Net序列化为键值字典?

Ear*_*rlz 4 c# json json.net

您好我正在尝试将对象序列化为哈希,但我没有得到我想要的东西.

码:

class Data{
  public string Name;
  public string Value;
}
//...
var l=new List<Data>();
l.Add(new Data(){Name="foo",Value="bar"});
l.Add(new Data(){Name="biz",Value="baz"});
string json=JsonConvert.SerializeObject(l);
Run Code Online (Sandbox Code Playgroud)

当我这样做时,json结果值是

[{"Name":"foo","Value":"bar"},{"Name":"biz","Value":"baz"}]
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

[{"foo":"bar"},{"biz":"baz"}]
Run Code Online (Sandbox Code Playgroud)

我如何让JSON像那样出现?

cod*_*ion 8

试试这个方法的最后一行:

string json = JsonConvert.SerializeObject(l.ToDictionary(x=>x.Name, y=>y.Value));

结果: {"foo":"bar", "biz":"baz"}

结果:[{"foo":"bar"},{"biz":"baz"}]你可以这样做......

string json = JsonConvert.SerializeObject(new object[]{new {foo="bar"}, new {biz = "baz"} });

要么

string json = JsonConvert.SerializeObject(new object[]{new Data1{foo="bar"}, new Data2{biz = "baz"} });

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