为什么公司 json 的 value 都是 str?

2021-09-29 11:34:26 +08:00
 monster1priest

为什么好多公司的项目用 json 传数据,bool 和 int 都用 str ?
为什么不用 bool 和 number,看起来不是会更清晰吗?
是为了考虑兼容性吗?

2978 次点击
所在节点    问与答
14 条回复
vvhhaaattt
2021-09-29 12:07:29 +08:00
bool 不清楚,数字可能是
1 json 数字不区分浮点数与整数
2 前端如果对数字不做计算的话,显示更方便,不需要前端处理
3 需要精度控制的接口,前端收到 float 会很烦
4 有可能超精度范围的话就只能用字符串了,剩下的前端处理
Mithril
2021-09-29 12:19:49 +08:00
JSON 直接传数字的话各种精度坑,还不如用字符串,精度自己控制。反正绝大部分语言都带字符串和数字的转换。
既然字符串和数字都是字符串,为啥还留个 bool 。。。全用字符串直接统一了。
masterclock
2021-09-29 12:41:09 +08:00
曾经见过,收到的全 String JSON 反序列化成 Map,取出来的就是 String,
数字要计算的解析一下
Boolean 直接比较字符串
内嵌的对象 TMD 也是 String,用的时候再解析一下

又不是不能用
tinkerer
2021-09-29 12:46:44 +08:00
如一楼所言, 数字用 string 是为了控制精度, 别的我就觉得是领导的个人决定了
Justin13
2021-09-29 12:56:17 +08:00
数值有精度和溢出的问题
sadfQED2
2021-09-29 12:56:30 +08:00
因为后端是 php 吧,如果后端不全部转 str 你又会吐槽垃圾后端,返回值一会 int 一会 bool 一会 str
30DReBYaadTBs4Gk
2021-09-29 12:57:13 +08:00
不同语言处理的时候,很多库不支持 int64
IvanLi127
2021-09-29 13:03:10 +08:00
因为懒呗,数字除了精度和长度限制外,一般整数和允许丢失精度的浮点数还是应该用 number 。没啥兼容性问题。
cpstar
2021-09-29 13:25:56 +08:00
全都 str 化,根据实际情况再做强类型,不好么? javascript 本身就是弱类型,为啥要纠结这个呢?

何况还有前边说的数字精度问题、序列化 /反序列化问题
ShuoHui
2021-09-29 13:29:03 +08:00
number 除非只有 0 、1,其他时候反正我都用 str,少点坑。
Leonard
2021-09-29 13:36:23 +08:00
str 坑少,前几天还碰到一个 double 的精度问题
CodeCodeStudy
2021-09-29 14:55:37 +08:00
json 就是拿来传输的啊,传输的都是字符串
EscYezi
2021-09-29 16:51:00 +08:00
我参与的项目都是用 bool 和 number 的,除非要传 long 这种超精度只能用 string 了
BeautifulSoap
2021-09-29 17:07:18 +08:00
因 为 json 里 数 字 是 不 区 分 int 和 浮 点 的,没有做好约定,你根本不知道对方给你传的 5 到底是 int 还是浮点。而且有经验的人跟你说,你用 json 的数字来传送 `5.0` 这样的浮点值的时候极坑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/805107

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX