C#WinRT:如何将Dictionary对象序列化为JSON字符串和其他方式?

时间:2014-01-29 05:51:45

标签: c# windows-runtime windows-store-apps

我正在编写一个winRT应用程序(Windows商店应用程序)

我有一个字典对象 - 其中一个键的值可以是字符串,整数另一个字典对象或提到类型的列表。 (我没有任何自定义类对象作为字典中的值)

我需要将此对象序列化为json字符串...(键与字典的键相同,给定键的值将根据给定的类型而定)

我可以通过枚举字典来自己做,但我想知道是否有任何简单的方法可以做到这一点?

基本上,我正在寻找一种完成这项工作的通用方法。 我看过DataContractJsonSerializer,但看起来我需要将DataContract和其他属性添加到对象中(因为我的值类型有限且简单 - 我不想进入那个麻烦)

另外,我想要一种方法将给定的json字符串转换回字典对象(类型相同,没有自定义类对象)

谢谢,

1 个答案:

答案 0 :(得分:1)

您可以使用Json.NET(在此库中搜索NuGet)。这个lib是免费的,比.NET嵌入更快。只需为您使用的不同类型的词典创建几个重载方法。像这样:

// Serialization:
private string DictionaryToJson(IDictionary<string, int> dictionary)
{
    return JsonConvert.SerializeObject(dictionary, Formatting.Indented);
}

// Disearilization:
private Dictionary<string, int> JsonToDictionary(string json)
{
    return JsonConvert.DeserializeObject<Dictionary<string, int>>(json);
}

注意:您可能还想使用SerializeObject / DeserializeObject的异步版本