Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON的反序列化在转换为datatable时会丢失十进制数_C#_Json_Serialization_Datatable_Json.net - Fatal编程技术网

C# JSON的反序列化在转换为datatable时会丢失十进制数

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使用

我有一个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的部分断开点时,它实际上变成了一个整数。如果使用双精度,请将数据类型转换为十进制