Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
通过使用JSON转换器将JSON转换为c#,我面临一个问题_C# - Fatal编程技术网

通过使用JSON转换器将JSON转换为c#,我面临一个问题

通过使用JSON转换器将JSON转换为c#,我面临一个问题,c#,C#,通过使用JSON转换器将JSON转换为c#,我面临一个问题。当转换值为10000.0时,我有一个字段十进制值为10000-如何限制它 using System; using Newtonsoft.Json; public class Program { public class Employee { public int ID { get; set; } public string Name { get; set; } public decim

通过使用JSON转换器将JSON转换为c#,我面临一个问题。当转换值为10000.0时,我有一个字段十进制值为10000-如何限制它

using System;
using Newtonsoft.Json;


public class Program
{
    public class Employee  
{  
    public int ID { get; set; }  
    public string Name { get; set; }  
    public decimal? Salary { get; set; }  
}  
    public static void Main()
    {
         // Serializaion  
    Employee empObj = new Employee();  
    empObj.ID = 1;  
    empObj.Name = "Manas";  
    empObj.Salary = 10000;

    // Convert Employee object to JOSN string format   
    string jsonData = JsonConvert.SerializeObject(empObj);  

    Console.WriteLine(jsonData); 
    }
}
实际结果:

{"ID":1,"Name":"Manas","Salary":10000.0}
预期结果:

{"ID":1,"Name":"Manas","Salary":10000}

尝试使用自定义转换器,请参阅下面的代码段

using System;
using System.Globalization;
using Newtonsoft.Json;


public class Program
{
    public class Employee
    {
        public int ID { get; set; }
        public string Name { get; set; }

        [JsonConverter(typeof(CustomDecimalConverter))]
        public decimal? Salary { get; set; }
    }
    public static void Main()
    {
        // Serializaion  
        var empObj = new Employee { ID = 1, Name = "Manas", Salary = 10000 };

        // Convert Employee object to JOSN string format   
        var jsonData = JsonConvert.SerializeObject(empObj);

        Console.WriteLine(jsonData);
        Console.ReadLine();
    }

    public class CustomDecimalConverter : JsonConverter    
    {    
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)    
        {    
            writer.WriteValue(((decimal)value).ToString(CultureInfo.InvariantCulture));    
        }

        public override bool CanRead => false;

        public override bool CanConvert(Type objectType)    
        {    
            return objectType == typeof(decimal) || objectType == typeof(decimal?);    
        }

        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)    
        {    
            throw new NotImplementedException();    
        }       
    }
}

我想说10000.0是十进制的预期结果。当你想让10000变为整数时,我也需要小数。请详细说明你所说的“需要小数”是什么意思?举个例子。有没有办法限制这一点
10000.0
有什么问题?许多解析器将
10000
转换为
10000I
,而不是
10000m
10000d