使用nashorn解析空的json数组时出错

时间:2016-12-20 14:28:05

标签: javascript arrays json nashorn

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

感谢。 Ĵ

1 个答案:

答案 0 :(得分:0)

您的使用是正确的。这似乎是一个错误,它似乎已被修复。我刚试过1.8.0_112。它按预期工作。