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
我正在使用带有 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