我使用带有nashorn的Oracle JDK 1.8.0_65来运行一些测试用例,我在解析空的JSON数组时发现了一个非常奇怪的行为。
这是我在nashorn中运行的代码:
var testCase = {
start:function() {
// Case 1: a initialized from JavaScript Array
var a = [];
this.log.debug("a before:" + JSON.stringify(a) + " (length:" + a.length + ")");
a.push(15);
this.log.debug("a after:" + JSON.stringify(a) + " (length:" + a.length + ")");
// Case 2: b initialized parsing a JSON Array
var b = JSON.parse("[]");
this.log.debug("b before:" + JSON.stringify(b) + " (length:" + b.length + ")");
b.push(15);
this.log.debug("b after:" + JSON.stringify(b) + " (length:" + b.length + ")");
}
};
,输出为:
a before:[] (length:0)
a after:[15] (length:1)
b before:[] (length:0)
b after:[0,15] (length:2)
我看起来像nashorn JSON解析器中的错误。返回的数组实际上不是一个空数组,但在推送第一个元素之前它看起来就是这样。有一个隐藏的" 0"在第一次推动后出现。
无法找到有关此行为的任何错误报告。 我是否以错误的方式使用JSON.parse?
感谢。 Ĵ
答案 0 :(得分:0)
您的使用是正确的。这似乎是一个错误,它似乎已被修复。我刚试过1.8.0_112。它按预期工作。