Reputation: 550
I'm currently trying to automate running Postman collections in our CI/CD tool. What I noticed is that, in general, JSON strings that also contain a raw JSON string cannot be parsed.
Here's a simple example to demonstrate this.
import groovy.json.JsonSlurper
def data = '''
{
"request":{
"raw": "{\n \"Hello\": \"World\"\n}"
}
}
'''
def parser = new JsonSlurper()
jsonData = parser.parseText(data)
println(jsonData)
I get the following error:
Caught: groovy.json.JsonException: expecting '}' or ',' but got current char ''' with an int value of 39
The current character read is ''' with an int value of 39
expecting '}' or ',' but got current char ''' with an int value of 39
line number 3
index number 7
'request':{
....^
groovy.json.JsonException: expecting '}' or ',' but got current char ''' with an int value of 39
The current character read is ''' with an int value of 39
expecting '}' or ',' but got current char ''' with an int value of 39
line number 3
index number 7
'request':{
....^
at main.run(main.groovy:12)
How can I get JSONSlurper to treat the value of raw
as a string?
Upvotes: 1
Views: 542
Reputation: 14604
The way you are escaping the quotes is not correct. Please see the following.
import groovy.json.*
def data = '''
{
"request":{
"raw": "\n { \\"Hello\\": \\"World\\"} \n"
}
}
'''
def parser = new JsonSlurper()
jsonData = parser.parseText(data)
println(jsonData)
Upvotes: 2