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