我在使用 WebAPI 和 JSON.Net 时遇到了一些奇怪的问题。当反序列化已提交给我的 API 的 JSON 时,我似乎失去了精度!我将小数点提交到小数点后 3 位,但是当值在我的对象中实现时,它只保留到小数点后 2 位!
我提交的 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。
还有其他人遇到这个问题吗?有什么建议么?