Почему JsonConvert выдает исключение при десериализации в словарь
У меня проблема с сериализацией строки JSON в словарь ключ / значение. Код похож на:
var parameters = "{\"id\":123}";
JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters);
Этот пример, кажется, работает отлично, давая мне {[id,123]}.
Сейчас. Когда я изменяю число на что-то вроде "070809", я неожиданно получаю исключение: "Newtonsoft.Json.JsonReaderException: входная строка" 070809 "не является допустимым числом. Путь" id ", строка 1, позиция 12. ---> System.FormatException: дополнительные непарсируемые символы находятся в конце строки."
var parameters = "{\"id\":070809}";
JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters);
Какие-либо предложения?
1 ответ
Ваш второй пример не является допустимым JSON. Напомним, что JSON основан на JavaScript, и на этом языке любой числовой литерал, который начинается с 0, интерпретируется как восьмеричное число. Действительные восьмеричные цифры 0-7, поэтому, если литерал содержит 8 или 9, он не может быть проанализирован и вызовет ошибку. ("010203" работает, потому что это действительный восьмеричный литерал, а "070809" - нет)