如何使用 Groovy 在文件中格式化 json

How to format json in a file using Groovy

我有一个关于格式化文件的问题,以便它以正确的格式显示 Json 输出。

目前,我下面的代码将 json 导入到文件中,但是当我打开文件时,它会在一行中显示 json(未勾选自动换行),如下所示:

{"products":[{"type":null,"information":{"description":"Hotel Parque La Paz (One Bedroom apartment) (Half Board) [23/05/2017 00:00:00] 7 nights","items":{"provider Company":"Juniper","provider Hotel ID":"245","provider Hotel Room ID":"200"}},"costGroups":[{"name":null,"costLines":[{"name":"Hotel Cost","search":null,"quote":234.43,"quotePerAdult":null,"quotePerChild":null}

我想格式化文件中的 json,使其看起来像实际的 json 格式:

{
  "products": [
    {
      "type": null,
      "information": {
        "description": "Hotel Parque La Paz (One Bedroom apartment) (Half Board) [23/05/2017 00:00:00] 7 nights",
        "items": {
          "provider Company": "Juniper",
          "provider Hotel ID": "245",
          "provider Hotel Room ID": "200"
        }
      },
      "costGroups": [
        {
          "name": null,
          "costLines": [
            {
              "name": "Hotel Cost",
              "search": null,
              "quote": 234.43,
              "quotePerAdult": null,
              "quotePerChild": null
            }

几乎每个 header 都有自己的行来包含其值。

在文件中实现正确的 json 格式的最佳方法是什么?

代码如下:

    def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context) 
    def dataFolder = groovyUtils.projectPath +"//Log Data//"
    def response = testRunner.testCase.getTestStepByName("GET_Pricing{id}").getProperty("Response").getValue();
    def jsonFormat = (response).toString()
    def fileName = "Logged At - D" +date+ " T" +time+ ".txt"
    def logFile = new File(dataFolder + fileName)


    // checks if a current log file exists if not then prints to logfile

    if(logFile.exists())
    {

     log.info("Error a file named " + fileName + "already exisits")
    }
        else
    {

     logFile.write "Date Stamp: " +date+ " " + time + "\n" + jsonFormat //response

如果您有 groovy 的现代版本,您可以:

JsonOutput.prettyPrint(jsonFormat)