【问题标题】:Is there a way to tell JSON that a number is Long instead of Integer?有没有办法告诉 JSON 一个数字是 Long 而不是 Integer?
【发布时间】:2021-10-15 03:25:04
【问题描述】:

我有一个名为“sector”的表,它的 ID 是 Long 而不是 Integer。当我从邮递员那里发送一个请求时,我说我想要某个表中“anotherEntity.idSector = 1”的实体,它会给我一个错误。

经过几次尝试/错误后,我才发现这个“1”是 Postman 的整数,所以当它进入 Java 时,它会给我一个错误,因为需要一个 Long 值。

那么,有没有办法告诉 JSON 该值是一个长数字?如果它是双精度数,我会将“1”替换为“1.0”并且可以,但是使用长数字?

提前致谢!

【问题讨论】:

    标签: java spring rest postman long-integer


    【解决方案1】:

    不,你不能“告诉 JSON”任何东西,它只是一种编码格式。与 JavaScript 一样,JSON 没有整数、没有长整数、没有浮点数和双精度数。

    它有数字:https://datatracker.ietf.org/doc/html/rfc8259#section-6

    如果您需要比 JSON 数字类型提供的更高的整数精度,您通常会将数字编码为字符串。对于像记录 ID 这样顺便是数字而非语义数字的字段,这通常是一个很好的策略(即,您永远不会对它们执行加法或除法等数字运算)。

    【讨论】:

    • 非常感谢您花时间回答...所以除了“询问”我收到的 Map 是否有一个名为“idSector”的键,还有其他解决方法吗?
    • @Calfa 最佳实践是将 JSON 中的 ID 视为不透明字符串。也许它们是 Long,也许它们是 UUID,也许它们是 Base58……只是“这是一个字符串;匹配它但不解析它”。
    • 那将是我肯定会标记的答案。请不要犹豫,将该评论转换为答案。看到更有经验的程序员对我的问题投反对票,这令人沮丧,因为我猜,他们认为这很愚蠢。尽管我是新手程序员,但问题是真实的,但是嘿!我尽力了!
    猜你喜欢
    • 2023-03-31
    • 2016-04-26
    • 2021-08-26
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2021-04-28
    相关资源
    最近更新 更多