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)