C# JSON的反序列化在转换为datatable时会丢失十进制数
我有一个JSON,看起来像这样C# JSON的反序列化在转换为datatable时会丢失十进制数,c#,json,serialization,datatable,json.net,C#,Json,Serialization,Datatable,Json.net,我有一个JSON,看起来像这样 var json = "{\"Month\":1,\"Year\":\"2016\",\"Col1\":\"\",\"Forecast\":2121.00,\"etc\":\"etc\"}"; 当我试图将其反序列化并转换为datatable时,2121.00变成了2121 丢失小数,从而导致将列的类型转换为int 我如何通过保留它的值来反序列化它,使它在datatable中仍然保留其decimal数据类型 顺便说一句,我正在使用Newtonsoft JSon使用
var json = "{\"Month\":1,\"Year\":\"2016\",\"Col1\":\"\",\"Forecast\":2121.00,\"etc\":\"etc\"}";
当我试图将其反序列化并转换为datatable时,2121.00变成了2121
丢失小数,从而导致将列的类型转换为int
我如何通过保留它的值来反序列化它,使它在datatable中仍然保留其decimal数据类型
顺便说一句,我正在使用Newtonsoft JSon使用这个方法
public string DataTableToJSONWithJSONNet(DataTable table)
{
string JSONString = string.Empty;
JSONString = JsonConvert.SerializeObject(table);
return JSONString;
}
您是否必须将其反序列化为datatable,而不是使用自己的类?还要注意,您所展示的不是JSON,而是JSON的C#字符串文字表示(没有前导和尾随引号)。实际的JSON不会有反斜杠来转义属性名——我建议您删除它们,只保留JSON本身。这是我在使用这个string方法后得出的值。我在上面编辑了我的帖子,但它不是实际值。这可能是您在调试器中看到的,但如果您将值打印到屏幕上,它将不会有那些反斜杠…当我尝试在将数据表绑定到gridview的部分断开点时,它实际上变成了一个整数。如果使用双精度,请将数据类型转换为十进制