Json中怎么利用string表示Number属性值
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关Json中怎么利用string表示Number属性值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。long类型引发的诡异情
千家信息网最后更新 2025年12月03日Json中怎么利用string表示Number属性值
这篇文章将为大家详细讲解有关Json中怎么利用string表示Number属性值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
long类型引发的诡异情况
长话短说,同事在利用swagger对接后端API时,诡异的发现swaggerUI中显示的json属性值并不是api返回的值。
[HttpGet]
public IActionResult QueryAsync()
{
var testJson = new
{
Id = 123123126964992223,
Profile = "Please attention on Id",
};
return new JsonResult(testJson);
}
该API在swagger输出:
{"Id": 123123126964992220,
"Profile": "Please attention on Id"}
进一步从Chrome->[Network]->[Preview]、[Response payload]观察到该long属性值的差异。
直接给结论:部分long类型值(最大值2^63^-1)会超过Javascript的最大安全Number(2^53^-1), 浏览器/前端 使用JSON.parse(123123126964992223)将不再保证准确性。

将JSON中的数字值作为字符串传输的是为了消除传输中的精度丢失或歧义性。
JSON规范中未给数值指定精度,JSON解析器会自由选择合适的数值精度。如果您的应用程序具有特定的精度要求,那么不同的JSON解析器可能不能正确表达精度。
另外部分long类型值(最大值263-1)会超过Javascript的最大安全Number(253 -1), 前端json反序列化时也会出现错误。
stackoverflow有个解释很赞:
覆写.NET Core序列化框架,将long转化为string
针对NewtonsoftJson编写BigIntJsonConvert
public class BigIntJsonConverter : JsonConverter
{
public override long ReadJson(JsonReader reader, Type objectType, [AllowNull] long existingValue, bool hasExistingValue, JsonSerializer serializer)
{
var flag = long.TryParse(reader.Value.ToString(), out long num);
return flag == true ? num : 0;
}
public override void WriteJson(JsonWriter writer, [AllowNull] long value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString());
}
}
// 截取自Startup.cs ConfigureServices函数
context.Services.AddMvc().AddNewtonsoftJson(options =>
{
options.SerializerSettings.Converters.Add(new BigIntJsonConverter());
});
关于Json中怎么利用string表示Number属性值就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
精度
属性
最大
类型
诡异
安全
内容
前端
序列
数值
文章
更多
最大值
知识
篇文章
部分
传输
不同
不错
合适
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
河北信创云服务器
软件开发研究生平均工资
嘉陵江数据库建设
搞软件开发到中年会不会失业
软件工程网络技术方向好吗
网络安全防护专业
完美root显示连接服务器出错
安全的三星手机服务器租用
未来互联网高科技
网络安全公司服务器
常用关系型数据库
5g网络技术人才实习生培训
服务器验证怎么关闭
芬芳互联网科技酱
工业网络技术招生
如何设置数据库用户重复密码
列王的纷争服务器负载
黄埔区软件开发好吗
网络安全里程碑会议
淮南网络安全考试
国企网络安全报告
如何还原oracla数据库
河北智能软件开发诚信企业
软件开发项目签哪类合同
达梦数据库调整列顺序
千变语音包连不上服务器
文件服务器转移
移动通信网络技术发展趋势
双路服务器电脑主机
时序数据库 涛思