[ https://issues.apache.org/jira/browse/GROOVY-11314?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Denis Jakupovic updated GROOVY-11314: ------------------------------------- Description: Hi, the groovy.json package is widely used. [https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/main/java/groovy/json/JsonOutput.java] If we use the toPrettyString function the json is being escaped. {code:java} JsonBuilder Class: public String toPrettyString() { return JsonOutput.prettyPrint(toString()); } {code} However, we can construct a JsonBuilder with JsonGenerator and disableUnicodeEscaping. The JsonOutput object uses the DefaultJsonGenerator with enabled unicode escaping. We need an option here and another logic in the prettyPrint function see here: {code:java} case STRING: String textStr = token.getText(); String textWithoutQuotes = textStr.substring(1, textStr.length() - 1); if (textWithoutQuotes.length() > 0) { output.addJsonEscapedString(textWithoutQuotes); } else { output.addQuoted(Chr.array()); } break; {code} If the JsonBuilder is constructed with a JsonGenerator it should be constructed with JsonOuput as well and the prettyPrint function shall not add escaped strings. Currently there is no way to prettyPrint a json with the groovy.json classes without having escaped characters in the generated json. Best Denis was: Hi, the groovy.json package is widely used. [https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/main/java/groovy/json/JsonOutput.java] If we use the toPrettyString function the json is being escaped. {code:java} JsonBuilder Class: public String toPrettyString() { return JsonOutput.prettyPrint(toString()); } {code} However, we can construct a JsonBuilder with JsonGenerator and disableUnicodeEscaping. The JsonOutput object uses the DefaultJsonGenerator with enabled unicode escaping. We need an option here and another logic in the prettyPrint function see here: {code:java} case STRING: String textStr = token.getText(); String textWithoutQuotes = textStr.substring(1, textStr.length() - 1); if (textWithoutQuotes.length() > 0) { output.addJsonEscapedString(textWithoutQuotes); } else { output.addQuoted(Chr.array()); } break; {code} If the JsonBuilder is constructed with a JsonGenerator it should be constructed with JsonOuput as well and the prettyPrint function shall not add escaped strings. Currently there is no way to prettyPrint a json with the groovy.json classes without having escaped characters in the generated json. Best Denis > JsonOutput Pretty Print always escapes characters > ------------------------------------------------- > > Key: GROOVY-11314 > URL: https://issues.apache.org/jira/browse/GROOVY-11314 > Project: Groovy > Issue Type: Bug > Components: JSON > Affects Versions: 3.0.19 > Reporter: Denis Jakupovic > Priority: Major > > Hi, > the groovy.json package is widely used. > [https://github.com/apache/groovy/blob/master/subprojects/groovy-json/src/main/java/groovy/json/JsonOutput.java] > > If we use the toPrettyString function the json is being escaped. > {code:java} > JsonBuilder Class: > public String toPrettyString() { > return JsonOutput.prettyPrint(toString()); > } {code} > However, we can construct a JsonBuilder with JsonGenerator and > disableUnicodeEscaping. The JsonOutput object uses the DefaultJsonGenerator > with enabled unicode escaping. We need an option here and another logic in > the prettyPrint function see here: > {code:java} > case STRING: > String textStr = token.getText(); > String textWithoutQuotes = textStr.substring(1, textStr.length() - 1); > if (textWithoutQuotes.length() > 0) { > output.addJsonEscapedString(textWithoutQuotes); > } else { > output.addQuoted(Chr.array()); > } > break; {code} > If the JsonBuilder is constructed with a JsonGenerator it should be > constructed with JsonOuput as well and the prettyPrint function shall not add > escaped strings. > Currently there is no way to prettyPrint a json with the groovy.json classes > without having escaped characters in the generated json. > Best > Denis -- This message was sent by Atlassian Jira (v8.20.10#820010)