Newtonsoft 序列化:带前导零的字符串

Newtonsoft Serialize: strings with leading zeros

我有一个简短的问题:

为什么这样做

Newtonsoft.Json.JsonConvert.DeserializeObject<string>("768")

但这不是

Newtonsoft.Json.JsonConvert.DeserializeObject<string>("0768")

在 Json 字符串中应该有 2 组 "",试试这个

string s= Newtonsoft.Json.JsonConvert.DeserializeObject<string>("\"0768\""); // 0768

如果只有一组,json 将字符串反序列化为数字

int i= JsonConvert.DeserializeObject<int>("768"); //768

但由于某些原因,任何从零开始的数字都会导致异常

int i= JsonConvert.DeserializeObject<int>("0768"); 

这是 Json 文档中的一个众所周知的错误

但是如果你尝试这个,你会得到一个异常

string s= JsonConvert.DeserializeObject<string>("abc")

没关系

string s= JsonConvert.DeserializeObject<string>("\"abc\""); //abc