1

我有以下 JSON:

[{"hashcode": 4830991188237466859},{...}]

我有以下 Angular/JS 代码:

var res = $resource('<something>');
...
res.query({}, function(json) {hashcode = json[0].hashcode;};
...

令人惊讶的是(对我来说,我不是 JS 专家),我发现某些东西(?)将值四舍五入到 1000 的精度(四舍五入最后 3 位数字)。这是一个问题,因为这是某物的哈希码。

另一方面,如果我将值作为字符串写入 JSON,例如 -

[{"hashcode": "4830991188237466859"},{...}]

这不会发生。但这给我带来了一个不同的问题(使用 JMeter/JSON 路径,它通过运行我的查询来提取值 ["4830991188237466859"] $.hashcode- 我不能将其用作 HTTP 请求参数(我需要添加?hashcode=...到查询中,但是我最终得到?hashcode=["..."]

因此,我感谢以下方面的帮助:

  1. 了解谁和为什么——四舍五入我的哈希,以及如何避免它
  2. JMeter/JSON 路径帮助

谢谢!

4

3 回答 3

2
  1. 每个系统架构都有它可以表示的最大数量。查看Number.MAX_VALUE或将您的号码粘贴到控制台中。你会看到它发生在 JavaScript 级别,与 Angular 无关。由于散列不代表某物的数量,因此它是一个字符串是非常自然的。这导致我

  2. 没有错site.com/page?hashcode=4830991188237466859- 它在那里被视为字符串,你应该继续这样对待它。

于 2014-03-11T07:25:06.557 回答
2

javascript Number 类型是基于浮点的,只能表示 -2 53和 2 53之间的所有整数。因此,根据您的经验,此范围之外的某些整数会受到“四舍五入”的影响。

于 2014-03-11T07:30:43.140 回答
1

关于JMeter JSON Path Extractor plugin,您的正确 JSON 路径查询hashcode将如下所示

$..hashcode[0]

有关 XPath 到 JSON 路径映射和更多详细信息,请参阅指南的Parsing JSON章节。

于 2014-03-11T12:40:17.237 回答