jsongroovypretty-printgroovy-console

Unable to convert into pretty string in groovy


I am making a curl call to rest api visa curl in groovy. Response is coming fine but the response is very large, it is a 17MB of data, following is my script :

def converter = "curl.......'"

def initialSize = 4096
def out = new ByteArrayOutputStream(initialSize)
def err = new ByteArrayOutputStream(initialSize)
def process = [ 'bash', '-c', converter].execute()
process.consumeProcessOutput(out, err)
process.waitFor()

Curl response is coming fine, when I print response on console ,store in variable out, it gives response data where it is not neat json as I see some "/n" characters. When I write this to file then I dont see any new line and neat json, all I see data in one line in key value format.

{"key1":"value1","key2":"value2",} in one huge line only

This is when i view in sublime. Now I want to convert this to pretty json and write neatly into file.I tried following to approaches but both prints empty ({ }) in console and in file.

def json = JsonOutput.toJson(out)

println new JsonBuilder(out).toPrettyString()

What did I miss?

I am trying to use groovy libraries only.

UPDATE:

As i try to debug, i found that it may be because all JSON parsers expect string but my output is ByteArrayOutputStream. But now how can I convert the out to string ? I tried out.toString and out.text, it does not work.


Solution

  • Use StringWriter instead of ByteArrayOutputStream

    Then JsonOutput.prettyPrint( stringWriter.toString() )