C# - JSON序列化的字典

ale*_*lex 5 c#

我是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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试调用SetKeys方法时,会出现问题.A ThreadAbortException抛出:

mscorlib.dll中发生了'System.Threading.ThreadAbortException'类型的第一次机会异常需要一个线程暂时运行.使用"监视"窗口执行评估.

您是否知道如何解决我的错误?

谢谢

gyo*_*fov 3

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

尝试:

var json = new JavaScriptSerializer().Serialize(keys.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString()));
Run Code Online (Sandbox Code Playgroud)

或者:

string jsonString = serializer.Serialize((object)keys);
Run Code Online (Sandbox Code Playgroud)