反序列化

时间:2015-04-29 12:15:55

标签: c# json

好吧,当我尝试运行我的应用程序时出现此问题:

  

无效的JSON原语:。

public static void ReloadConfig()
{
    if (!File.Exists("config.cfg"))
    {
        StringBuilder sb = new StringBuilder();

        sb.Append("{\r\n");
        sb.Append("\"Admins\":[76561198214617172],\r\n");
        sb.Append("\"Chatty\":false,\r\n");
        sb.Append("}");

        File.WriteAllText("config.cfg", sb.ToString());
    }
    try
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        config = jss.Deserialize<Roles>(File.ReadAllText("config.cfg"));
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
        Console.ReadKey();
        ReloadConfig();
    }
}

这就是配置在生成时的样子:

{
"Admins":[76561198214617172],
"Chatty":false,
}

从我的错误消息中我会假设它说我的配置中有空格,但我没有。

如果重要,我会使用System.Web.Script.Serialization

2 个答案:

答案 0 :(得分:11)

false之后输出中有错误的逗号:

{
"Admins":[76561198214617172],
"Chatty":false,
}

应该是:

{
"Admins":[76561198214617172],
"Chatty":false
}

答案 1 :(得分:4)

您需要在false后删除逗号:

{
"Admins":[76561198214617172],
"Chatty":false
}

我使用JSONLint来验证您的JSON,还有许多其他在线JSON验证器。