反序列化时无效的JSON原语

Joa*_*son 9 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

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

{
"Admins":[76561198214617172],
"Chatty":false,
}
Run Code Online (Sandbox Code Playgroud)

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

如果这很重要我会用System.Web.Script.Serialization.

Dav*_*idG 12

在以下情况下,您的输出中有错误的逗号false:

{
"Admins":[76561198214617172],
"Chatty":false,
}
Run Code Online (Sandbox Code Playgroud)

应该:

{
"Admins":[76561198214617172],
"Chatty":false
}
Run Code Online (Sandbox Code Playgroud)

  • @garryp一个特定的实现可能选择比要求更宽容,但它不必.[规范](http://www.json.org/)明确指出JSON对象中的逗号必须后跟一个键值对. (2认同)