一尘不染

覆盖Json反序列化以前导零作为十进制而不是八进制值的数字

json

我正在生成一个json对象,

{
   "number":0100
}

当使用Newtonsoft.Json在C#中反序列化此对象时,由于前导零,因此将 0100
视为八进制数。有没有一种方法可以覆盖此功能,并将其视为十进制整数?


阅读 217

收藏
2020-07-27

共1个答案

一尘不染

我已经看过了JsonTextReader.ParseNumber()(读数字的“魔术”发生的方法)。我会说这是行不通的。八进制情况特别处理

bool flag2 = c == '0' ...

然后

long value2 = text2.StartsWith("0x", StringComparison.OrdinalIgnoreCase) ? 
                  Convert.ToInt64(text2, 16) : 
                  Convert.ToInt64(text2, 8); // Here OCTAL!!!

我没有找到任何方法来覆盖此方法(除了重写 所有 在Json解析Read()中执行所有操作的方法) __

2020-07-27