response.send(来自 node.js / restify 应用程序)默认情况下将整数序列化为 32 位 low/high 部分?

response.send (from node.js / restify app) by default serializes integer into 32-bit low/high parts?

我正在使用带有 restify(最新)的节点 6.x (npm 3.x)。如果 javascript 对象包含 属性 设置为整数,默认情况下 restify.send() 会将该整数序列化为 "low" 和 "high" 部分 - - 可能表示 64 位整数的 low/high 32 位分量。

如何关闭此默认行为,使整数不被编码为低位和高位部分?

谢谢。

我可以在使用 integer, is that what you're using to represent integer values that may exceed JavaScript's Number.MAX_SAFE_INTEGER 时重现此行为吗?

如果是,那么你需要将那些integer实例转换为合适的JS编号,否则它们无法在JSON中表示为数值:

Number(obj.intProperty) // or: obj.intProperty.toNumber()

HOWEVER:我认为您使用 integer 是有原因的。如果 obj.intProperty 表示的数字太大而无法表示为普通 JS Number,转换它可能会产生无效结果(这就是 JSON-表示 integer 的原因是由两个 32 位值组成的对象。

编辑:事实证明问题是由 Neo4J 驱动程序对 64 位整数的表示引起的,如此处记录:https://www.npmjs.com/package/neo4j-driver#a-note-on-numbers-and-the-integer-type