You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Alan Hengle (JIRA)" <ji...@apache.org> on 2015/10/14 19:31:05 UTC

[jira] [Created] (GROOVY-7630) JsonSlurper LAX parser with invalid number

Alan Hengle created GROOVY-7630:
-----------------------------------

             Summary: JsonSlurper LAX parser with invalid number
                 Key: GROOVY-7630
                 URL: https://issues.apache.org/jira/browse/GROOVY-7630
             Project: Groovy
          Issue Type: Bug
          Components: groovy-jdk
    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
            Assignee: Guillaume Laforge
            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)