[
https://issues.apache.org/jira/browse/GROOVY-7630?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15036067#comment-15036067
]
Alan Hengle commented on GROOVY-7630:
-------------------------------------
I agree if one wanted a hex number, it should be 0x1a or 0x1A and they should
parse to the same hex number. If the general rule for the LAX parser is "try
to make sense of what they put in", then it seems that anything other than a
valid number should parse as a string. So maybe 1a should just parse as a
string, and if they try to use it as a number it should give a
NumberFormatException.
> JsonSlurper LAX parser with invalid number
> ------------------------------------------
>
> Key: GROOVY-7630
> URL: https://issues.apache.org/jira/browse/GROOVY-7630
> Project: Groovy
> Issue Type: Bug
> Components: JSON
> Affects Versions: 2.4.5
> Environment: DISTRIB_ID=Ubuntu
> DISTRIB_RELEASE=14.10
> DISTRIB_CODENAME=utopic
> DISTRIB_DESCRIPTION="Ubuntu 14.10"
> Linux 3.16.0-44-generic x86_64
> Reporter: Alan Hengle
> Priority: Minor
>
> The JsonSlurper LAX parser parses an invalid number incorrectly:
> {code:title=Example.java|borderStyle=solid}
> import groovy.json.*
> def obj = new JsonSlurper().setType(JsonParserType.LAX).parseText('{ "num":
> 1a}')
> println "1a: num = ${obj.num}"
> println "1a: type is " + obj.num.class.name
> obj = new JsonSlurper().setType(JsonParserType.LAX).parseText('{ "num": 1A}')
> println "1A: num = ${obj.num}"
> println "1A: type is " + obj.num.class.name
> {code}
> produces:
> 1a: num = 59
> 1a: type is java.lang.Integer
> 1A: num = 27
> 1A: type is java.lang.Integer
> It seems like the parser should fail this as an invalid number, though one
> could argue the LAX parser could interpret it as hex 1a, but neither is being
> done. Valid numbers are of course parsed correctly.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)