2015-04-29 6 views
9

Alright, поэтому с этим вопросом, когда я пытаюсь запустить мое приложение:Invalid JSON примитивные при десериализации

Invalid 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.

ответ

11

Вы странствующая запятая в вашем выходе после false:

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

Должен быть:

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

Интересно, что это должно быть ошибкой при этом, поскольку дополнительная запятая не должна быть недействительной. – garryp

+0

@garryp Эта запятая ** ** недействительна, попробуйте разобрать ее любым инструментом Json. – DavidG

+0

Это решило мою проблему, я бы предположил, что дополнительная запятая не вызовет столько драмы. Но я новичок в json, спасибо! –

4

Вы должны удалить запятую после ложного:

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

Я JSONLint, чтобы проверить ваш JSON, есть много других онлайн-валидаторов JSON.

+0

Я понятия не имею, что этот инструмент действительно существует, спасибо ! –

Смежные вопросы