For example
{
"number":0100
}
if look at JsonTextReader.ParseNumber() you can see
long value2 = text2.StartsWith("0x", StringComparison.OrdinalIgnoreCase)
? Convert.ToInt64(text2, 16)
: Convert.ToInt64(text2, 8);
it can throw System.FormatException (ex.: "09999").
In ECMA-404 The JSON Data Interchange Standard number must be only in 10base.
Json.NET handles them an octal in JsonTextReader. It is by design.