【发布时间】:2021-04-27 06:12:08
【问题描述】:
我的模型中有一个小数属性来显示一些数字
当我在任何 JSON 编辑器工具中大摇大摆地检查我的 API 时,它显示 #.00 格式(小数点后两位数),但是当我将它输入浏览器时,它显示 #.0000 格式(小数点后四位数字) )。
有人能解释一下这是什么行为,解决办法是什么
因为我为此尝试了正则表达式,但似乎仅用于验证,不采取任何措施将其值截断至 2 位
[RegularExpression(@"^\d+\.\d{0,2}$")]
示例:使用数据注释(首选方式)而不是使用 ToString("F2") 或 ToString("#.00") 的预期值为 67.50 而不是 67.500
编辑 1:
更详细的例子:
当我们在浏览器中点击 api 时,属性值为 67.5000,
通过 swagger 或 postman 工具检查时属性值为 67.50
在许多应用程序(MVC、Angular 6、android)中使用 api 并在网页上显示时获得 67.5000。
可以使用字符串格式化程序解决,但我无法访问前端,唯一的解决方案是在 api 级别更正此问题(需要最少的代码更改,因此首选数据注释组合)
【问题讨论】:
-
您能否再充实一下您的示例,好吗?我希望这与需要格式化显示值有关,而不是验证输入。
-
@Llama 你说得对,格式而不是验证,api 使用者应该得到 #.00 格式,我用更详细的例子更新了我的问题
-
如果 JSON 响应包含 67.50,那么您无能为力,因为您已经完成了所有可以做的事情。客户端将 67.50 解释为 67.5000 并没有错,因为它们都是相同值的表示,但如果需要不同的值,则必须修改客户端。
标签: c# .net-core asp.net-core-webapi