序列化字典 - 如何重命名键和值

时间:2013-03-30 07:40:46

标签: json asp.net-mvc-4

我有一个Dictionary<string,int[]>我需要序列化为JSON。使用默认格式化程序,我得到了

{"blah": [0,1,2,3], "yada": [0,1,2,3]}

我需要的是这样的东西

[{ name: "blah", data: [0,1,2,3]}, name: "yada", data: [0,1,2,3] }]

实现这一目标的最佳/最简单方法是什么?我应该编写自定义序列化程序类吗?或者是否有一种不同于Dictionary的不同集合类型?

1 个答案:

答案 0 :(得分:2)

使用一点LINQ,您可以轻松地将字典转换为您的格式:

var dict = new Dictionary<string, int[]>
    {
        {"blah", new[] {0, 1, 2, 3}},
        {"yada", new[] {0, 1, 2, 3}}
    };
var transformedData = dict.Select(e => new {name = e.Key, data = e.Value});
var json = JsonConvert.SerializeObject(transformedData);

或者您可以创建执行此转换的自定义JsonConverter