如何在C#中创建键值对数组?

7

我有一个基于ASP.NET MVC编写的应用程序。在我的某个控制器中,我需要使用C#创建一个对象,以便使用JsonConvert.SerializeObject()将其转换为JSON后结果如下:

[
  {'one': 'Un'},
  {'two': 'Deux'},
  {'three': 'Trois'}
]

我尝试使用 Dictionary<string, string> 来实现以下功能:

var opts = new Dictionary<string, string>();
opts.Add("one", "Un");
opts.Add("two", "Deux");
opts.Add("three", "Trois");

var json = JsonConvert.SerializeObject(opts);

然而,上述操作会生成以下JSON。
{
  'one': 'Un',
  'two': 'Deux',
  'three': 'Trois'
}

我该如何创建对象,以便JsonConvert.SerializeObject()生成所需的输出?


1
尝试使用一个键值对数组? - RBarryYoung
1
可能是Json.Net - 将字典序列化为键值对数组的重复问题。 - krillgar
1
@krillgar - 这并不完全是一个重复的问题。在那个问题中,字典条目属性名称被固定为“k”和“v”,但该问题希望属性名称成为字典键值。 - dbc
1个回答

10
你的外部JSON容器是一个数组,所以你需要返回一些非字典集合类型,例如List<Dictionary<string, string>>作为你的根对象,就像这样:
var opts = new Dictionary<string, string>();
opts.Add("one", "Un");
opts.Add("two", "Deux");
opts.Add("three", "Trois");

var list = opts.Select(p => new Dictionary<string, string>() { {p.Key, p.Value }});

这是一个示例代码编辑器网站


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接