-
Bug
-
Resolution: Fixed
-
P4
-
8
-
b08
-
x86
-
os_x
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8045083 | 8u25 | Sundararajan Athijegannathan | P4 | Resolved | Fixed | b01 |
JDK-8038119 | 8u20 | Sundararajan Athijegannathan | P4 | Resolved | Fixed | b09 |
JDK-8052483 | emb-8u26 | Sundararajan Athijegannathan | P4 | Resolved | Fixed | b18 |
FULL PRODUCT VERSION :
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Mac OS X 10.9.2
Darwin sethr.local 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
A DESCRIPTION OF THE PROBLEM :
For JSON with integer keys (that is, strings containing integers), JSON.parse hallucinates nonexistent entries if there are gaps between the keys.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
% jjs
jjs> JSON.stringify(JSON.parse(JSON.stringify({"0":0,"2":2})))
{"0":0,"1":0,"2":2}
jjs> JSON.stringify(JSON.parse(JSON.stringify({"0":"","2":""})))
{"0":"","1":null,"2":""}
Note that the "gap" between 0 and 2 has been filled. The value used depends on the types of the values of the entries.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expect the same behavior that V8 and Rhino both give:
V8 version 3.21.17 [sample shell]
> JSON.stringify(JSON.parse(JSON.stringify({"0":0,"2":2})))
{"0":0,"2":2}
> JSON.stringify(JSON.parse(JSON.stringify({"0":"","2":""})))
{"0":"","2":""}
% jrunscript
js> JSON.stringify(JSON.parse(JSON.stringify({"0":0,"2":2})))
{"0":0,"2":2}
js> JSON.stringify(JSON.parse(JSON.stringify({"0":"","2":""})))
{"0":"","2":""}
ACTUAL -
shown in steps to reproduce
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
I'm walking the results of JSON.parse and stripping out key/value pairs where the value is null. (Fortunately my data is such that this is valid.)
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Mac OS X 10.9.2
Darwin sethr.local 13.1.0 Darwin Kernel Version 13.1.0: Thu Jan 16 19:40:37 PST 2014; root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64
A DESCRIPTION OF THE PROBLEM :
For JSON with integer keys (that is, strings containing integers), JSON.parse hallucinates nonexistent entries if there are gaps between the keys.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
% jjs
jjs> JSON.stringify(JSON.parse(JSON.stringify({"0":0,"2":2})))
{"0":0,"1":0,"2":2}
jjs> JSON.stringify(JSON.parse(JSON.stringify({"0":"","2":""})))
{"0":"","1":null,"2":""}
Note that the "gap" between 0 and 2 has been filled. The value used depends on the types of the values of the entries.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
I expect the same behavior that V8 and Rhino both give:
V8 version 3.21.17 [sample shell]
> JSON.stringify(JSON.parse(JSON.stringify({"0":0,"2":2})))
{"0":0,"2":2}
> JSON.stringify(JSON.parse(JSON.stringify({"0":"","2":""})))
{"0":"","2":""}
% jrunscript
js> JSON.stringify(JSON.parse(JSON.stringify({"0":0,"2":2})))
{"0":0,"2":2}
js> JSON.stringify(JSON.parse(JSON.stringify({"0":"","2":""})))
{"0":"","2":""}
ACTUAL -
shown in steps to reproduce
REPRODUCIBILITY :
This bug can be reproduced always.
CUSTOMER SUBMITTED WORKAROUND :
I'm walking the results of JSON.parse and stripping out key/value pairs where the value is null. (Fortunately my data is such that this is valid.)
- backported by
-
JDK-8038119 Nashorn: JSON.parse comes up with nonexistent entries if there are gaps between the keys
- Resolved
-
JDK-8045083 Nashorn: JSON.parse comes up with nonexistent entries if there are gaps between the keys
- Resolved
-
JDK-8052483 Nashorn: JSON.parse comes up with nonexistent entries if there are gaps between the keys
- Resolved