【问题标题】:Serialize Dictionary - how to rename key and value序列化字典 - 如何重命名键和值
【发布时间】:2013-03-30 07:40:46
【问题描述】:

我有一个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<string, List<int>>
  • 字典

标签: json asp.net-mvc-4


【解决方案1】:

使用一点 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 来执行此转换。

【讨论】:

  • 很好的建议,谢谢!唯一的问题是名称和数据被序列化为“名称”和“数据”。有什么想法吗?
  • JSON 格式在属性名称周围使用引号。所以严格来说 [{ name: "blah", data: [0,1,2,3]}, name: "yada", data: [0,1,2,3] }] 不是一个有效的 JSON 文档,因为 namedata 没有被引用。然而,通过一些黑客攻击,可以说服 JSON.net 不会生成有效的 JSON:stackoverflow.com/questions/7553516/…
猜你喜欢
  • 2017-06-06
  • 2013-05-04
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2016-09-23
  • 2022-01-17
  • 1970-01-01
  • 2016-08-23
相关资源
最近更新 更多