You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core OData 8中IEEE754Compatible=true未返回字符串格式int64

ASP.NET Core OData 8 未实现IEEE754Compatible=true的数值类型字符串序列化功能

规范要求

根据OData v4规范,当请求的Accept头部或$format查询参数中包含IEEE754Compatible=true时,服务需将int64和decimal类型以字符串格式返回,核心规则如下:

  • 请求JSON格式可通过$format查询参数或Accept头部指定,$format优先级更高,支持IEEE754Compatible等参数;
  • IEEE754Compatible=true要求将Edm.Int64和Edm.Decimal(包括计数)序列化为字符串,避免JavaScript处理时出现数字精度丢失问题。

问题现象

  • 虽然OData.net在2016年的相关讨论中已确认实现该功能,但ASP.NET Core OData 8并未支持此特性。
  • 测试表明,无论通过Accept头部还是$format查询参数设置IEEE754Compatible=true,返回JSON中的long类型属性始终以数字格式输出,未按规范转为字符串。

复现步骤

  1. 遵循微软《ASP.NET Core OData 8入门》教程搭建项目;
  2. 为Customer模型添加long类型的TestLong属性;
  3. 使用long.MaxValue初始化该属性的测试数据。

调试更新

自定义IStreamBasedJsonWriterFactory并注入后调试发现,isIeee754Compatible参数始终为false——即便请求中已明确指定IEEE754Compatible=true,当前暂未找到手动设置该参数的有效方式。


内容的提问来源于stack exchange,提问作者Daniel Vernall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 22:04:56