为什么好多公司的项目用 json 传数据,bool 和 int 都用 str ?
为什么不用 bool 和 number,看起来不是会更清晰吗?
是为了考虑兼容性吗?
1
vvhhaaattt 2021-09-29 12:07:29 +08:00 via Android
bool 不清楚,数字可能是
1 json 数字不区分浮点数与整数 2 前端如果对数字不做计算的话,显示更方便,不需要前端处理 3 需要精度控制的接口,前端收到 float 会很烦 4 有可能超精度范围的话就只能用字符串了,剩下的前端处理 |
2
Mithril 2021-09-29 12:19:49 +08:00
JSON 直接传数字的话各种精度坑,还不如用字符串,精度自己控制。反正绝大部分语言都带字符串和数字的转换。
既然字符串和数字都是字符串,为啥还留个 bool 。。。全用字符串直接统一了。 |
3
masterclock 2021-09-29 12:41:09 +08:00
曾经见过,收到的全 String JSON 反序列化成 Map,取出来的就是 String,
数字要计算的解析一下 Boolean 直接比较字符串 内嵌的对象 TMD 也是 String,用的时候再解析一下 又不是不能用 |
4
tinkerer 2021-09-29 12:46:44 +08:00
如一楼所言, 数字用 string 是为了控制精度, 别的我就觉得是领导的个人决定了
|
5
Justin13 2021-09-29 12:56:17 +08:00 via Android
数值有精度和溢出的问题
|
6
sadfQED2 2021-09-29 12:56:30 +08:00 via Android
因为后端是 php 吧,如果后端不全部转 str 你又会吐槽垃圾后端,返回值一会 int 一会 bool 一会 str
|
7
30DReBYaadTBs4Gk 2021-09-29 12:57:13 +08:00 via Android
不同语言处理的时候,很多库不支持 int64
|
8
IvanLi127 2021-09-29 13:03:10 +08:00 via Android
因为懒呗,数字除了精度和长度限制外,一般整数和允许丢失精度的浮点数还是应该用 number 。没啥兼容性问题。
|
9
cpstar 2021-09-29 13:25:56 +08:00
全都 str 化,根据实际情况再做强类型,不好么? javascript 本身就是弱类型,为啥要纠结这个呢?
何况还有前边说的数字精度问题、序列化 /反序列化问题 |
10
ShuoHui 2021-09-29 13:29:03 +08:00 via iPhone
number 除非只有 0 、1,其他时候反正我都用 str,少点坑。
|
11
Leonard 2021-09-29 13:36:23 +08:00
str 坑少,前几天还碰到一个 double 的精度问题
|
12
CodeCodeStudy 2021-09-29 14:55:37 +08:00
json 就是拿来传输的啊,传输的都是字符串
|
13
EscYezi 2021-09-29 16:51:00 +08:00 via iPhone
我参与的项目都是用 bool 和 number 的,除非要传 long 这种超精度只能用 string 了
|
14
BeautifulSoap 2021-09-29 17:07:18 +08:00
因 为 json 里 数 字 是 不 区 分 int 和 浮 点 的,没有做好约定,你根本不知道对方给你传的 5 到底是 int 还是浮点。而且有经验的人跟你说,你用 json 的数字来传送 `5.0` 这样的浮点值的时候极坑
|