无法在 groovy 中转换为漂亮的字符串

Posted

技术标签:

【中文标题】无法在 groovy 中转换为漂亮的字符串【英文标题】:Unable to convert into pretty string in groovy 【发布时间】:2021-09-12 22:42:04 【问题描述】:

我在 groovy 中打了一个 curl 调用来休息 api visa curl。响应很好,但响应非常大,这是一个 17MB 的数据,以下是我的脚本:

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 响应很好,当我在控制台上打印响应,存储在变量中时,它会给出响应数据,它不是整洁的 json,因为我看到了一些“/n”字符。当我将其写入文件时,我看不到任何新行和整洁的 json,我只看到一行中的键值格式数据。

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

这是我以崇高的方式观看的时候。现在我想将其转换为漂亮的 json 并整齐地写入文件。我尝试遵循方法,但在控制台和文件中都打印为空 ( )。

def json = JsonOutput.toJson(out)

println new JsonBuilder(out).toPrettyString()

我错过了什么?

我正在尝试仅使用 groovy 库。

更新:

当我尝试调试时,我发现这可能是因为所有 JSON 解析器都需要字符串,但我的输出是 ByteArrayOutputStream。但是现在我怎样才能将 out 转换为 string ?我试过out.toString和out.text,都不行。

【问题讨论】:

【参考方案1】:

使用StringWriter 代替ByteArrayOutputStream

然后JsonOutput.prettyPrint( stringWriter.toString() )

【讨论】:

以上是关于无法在 groovy 中转换为漂亮的字符串的主要内容,如果未能解决你的问题,请参考以下文章

在 Groovy 中将字符串转换为 InputStream

在 Groovy 中将字符串转换为 int

在 Groovy 中将整数转换为十六进制字符串

将字符串变量转换为列表 [Groovy]

如何在groovy中将十六进制转换为字符?

将空字符串转换为 null 的 Groovy 方法