我遇到了一些使用WebAPI和JSON.Net的奇怪问题。当反序列化已提交给我的API的JSON时,我似乎失去了精确性!我将小数点提交到小数点后3位,但是当数值在我的对象中实现时,它只有2位小数!WebAPI,JSON.Net和丢失小数精度
我提交的JSON看起来是这样的:
{
id: 1,
name: 'mock data',
value: 123.456
}
这注定是一个类,它看起来是这样的:
public class MockObject {
public int Id { get; set; }
public string Name { get; set; }
public decimal Value { get; set; }
}
只是为了完整性,这基本上就是我的WebAPI方法看起来像:
public HttpResponseMessage Post (MockObject data) {
// do something with the value here and return the relevant response
}
我通过JQuery ajax请求提交数据,但是我可以看到发布的值与我在提交之前检查chrome开发工具中的值并在他们“走过电线”之后在提琴手中完全一样。
当它在Post
方法中使用物化对象做某事时,“值”的值是123.45。
如果我提交2个或更少的小数位(即123.4或123.45),则按照预期将值解序列化,但是如果我提交了2个以上的小数位(即123.456或123.4567等),则该值总是被反序列化至123.45。
任何人碰到这个问题?有什么建议?