使用 nashorn 解析空 json 数组时出错
Error parsing empty json array with nashorn
我正在使用 Oracle JDK 1.8.0_65 和 nashorn 来 运行 一些测试用例,我在解析空 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?
谢谢。
J
您的用法是正确的。这似乎是一个错误,而且似乎已被修复。我刚试过 1.8.0_112。它按预期工作。
我正在使用 Oracle JDK 1.8.0_65 和 nashorn 来 运行 一些测试用例,我在解析空 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?
谢谢。 J
您的用法是正确的。这似乎是一个错误,而且似乎已被修复。我刚试过 1.8.0_112。它按预期工作。