如何将字典转换为C#中的JSON字符串?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (42)

我想将我的转换Dictionary<int,List<int>>为JSON字符串。有谁知道如何在C#中实现这一点?

提问于
用户回答回答于

序列化仅包含数值或布尔值的数据结构非常简单。如果你没有太多的序列化,你可以为你的特定类型编写一个方法。

对于Dictionary<int, List<int>>你指定的,你可以使用Linq:

string MyDictionaryToJson(Dictionary<int, List<int>> dict)
{
    var entries = dict.Select(d =>
        string.Format("\"{0}\": [{1}]", d.Key, string.Join(",", d.Value)));
    return "{" + string.Join(",", entries) + "}";
}

但是,如果要序列化几个不同的类或更复杂的数据结构,或者尤其是在数据包含字符串值的情况下,最好使用已知道如何处理转义字符和换行符等信誉良好的JSON库。 Json.NET是一个流行的选项。

用户回答回答于

Json.NET可能现在已经充分地序列化C#字典,但是当OP最初发布这个问题时,许多MVC开发人员可能已经使用JavaScriptSerializer类,因为这是默认选项。

如果正在处理旧项目(MVC 1或MVC 2),并且无法使用Json.NET,则建议使用a List<KeyValuePair<K,V>>而不是a Dictionary<K,V>>。传统的JavaScriptSerializer类将会很好地序列化这种类型,但它会在字典中出现问题。

文档:使用Json.NET序列化集合

扫码关注云+社区