【发布时间】:2015-05-12 16:30:39
【问题描述】:
我在获取包含偶数浮点数的 json 数据时遇到问题:10.0。
AngularJS
var replenishAccount = { ReloadThresholdAmount: parseFloat(vm.account.ReloadThresholdAmount), ReloadAmount: parseFloat(vm.account.ReloadAmount) };
var webApiUrl = "https://localhost:44301";
$http({ method: 'PATCH', url: webApiUrl + '/api/account/patch/' + vm.account.ID, data: angular.toJson(replenishAccount)})
JSON
{"ReloadThresholdAmount": 10.2, "ReloadAmount": 10}
我需要的是
{"ReloadThresholdAmount": 10.2, "ReloadAmount": 10.0}
如果我执行 .toFix(2),我会得到字符串,但 web api 需要十进制。
{"ReloadThresholdAmount": "10.2", "ReloadAmount": "10.0"}
基本上,Web Api 抱怨它不能是字符串或整数。
Web API,我正在使用 Delta。这两个数量在 .NET 中是双倍的。
[Route("Patch/{id}")]
public IHttpActionResult Patch(int id, Delta<Account> account)
{
if (account == null)
return BadRequest();
Account accountFromDb = Account.GetInstanceByID(CurrentUser, id);
account.Patch(accountFromDb);
accountFromDb.Save(CurrentUser);
return Ok(account);
}
【问题讨论】:
-
为什么需要
10.0符号?一般来说,JavaScript 引擎将 10.0 视为等于 10,并将“不需要的小数”去掉,例如。在 JSON.stringify() 和 JSON.parse() 中。恕我直言,您应该在后端解决此问题,以便它将 10 视为与 10.0 相同。 -
你应该发布 Web API 方法
-
发布了带有 delta 的 web api。如果 10(10.0 从 js 中截断),则属性保持 0,但如果 10.01 则正确
标签: json angularjs serialization asp.net-web-api