C#-字典的JSON序列化

本文关键字:序列化 JSON 字典 C#- | 更新日期: 2023-09-27 17:59:01

我是C#开发的新手,

在我的项目中,我试图通过以下代码将Dictionary实例序列化到Settings存储中来保存它:

private static Dictionary<string, Dictionary<int, string>> GetKeys()
{
    Dictionary<string, Dictionary<int, string>> keys = null;
    try {
        JavaScriptSerializer ser = new JavaScriptSerializer();
        keys = ser.Deserialize<Dictionary<string, Dictionary<int, string>>>(Settings.Default.keys);
    }
    catch (Exception e)
    {
        Debug.Print(e.Message);
    }
    return keys;
}
private static void SetKeys(Dictionary<string, Dictionary<int, string>> keys)
{
    try
    {
        JavaScriptSerializer ser = new JavaScriptSerializer();
        Settings.Default.keys = ser.Serialize(keys);
    }
    catch (Exception e)
    {
        Debug.Print(e.Message);
    }
}

当我尝试调用SetKeys方法时,就会出现问题。抛出ThreadAbortException

mscorlib.dll中出现"System.Threading.ThreadAbortException"类型的首次机会异常评估需要一个线程临时运行。使用"监视"窗口执行评估。

你知道我该如何解决我的错误吗?

感谢

C#-字典的JSON序列化

最好使用Json.NET,但如果您想使用JavaScriptSerializer:

尝试:

var json = new JavaScriptSerializer().Serialize(keys.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString()));

或者:

string jsonString = serializer.Serialize((object)keys);