Groovy 脚本:如何在每个循环中 parse/format Json in groovy

Groovy script: How to parse/format Json in groovy in each loop

我是 Groovy 的新手,我正在尝试在 soap ui 中模拟服务。

Requirement 是用 json 数据加载一个文本文件,并用匹配数据加载一个节点。

我试过的如下,

def inputFile = new File("D:\Users\json.txt")
def InputJSON = new JsonSlurper().parseText(inputFile.text)

    InputJSON.each{  
        def ID1 = it
        it.items.each { 
            if(it.Number == itemNumber) 
            {
                log.info it
                requestContext.Id = ID1
            } 
        }
    }

这工作得很好,只有一个问题,就是格式。 当 ID1 加载到 requestContext.Id 时,json 的格式从文件中丢失。

我需要的是

{
 "items" {
        "number" : 1475175072691
      }
}

我得到的是

{
 metadata = {
        timestamp = 1475175072691
}
}

为什么要从我的 json 中去掉双引号 " 和冒号 :。 请提出建议。

以下代码:

import groovy.json.*

def str = '''\
[
   {
      "items":{
         "number":1475175072691
      }
   },
   {
      "items":{
         "number":1475175072691
      }
   },
   {
      "items":{
         "number":1475175072691
      }
   },
   {
      "items":{
         "number":1475175072691
      }
   }
]'''

def json = new JsonSlurper().parseText(str)

json.each { 
  println JsonOutput.prettyPrint(JsonOutput.toJson(it))
}

打印出以下结果:

{
    "items": {
        "number": 1475175072691
    }
}
{
    "items": {
        "number": 1475175072691
    }
}
{
    "items": {
        "number": 1475175072691
    }
}
{
    "items": {
        "number": 1475175072691
    }
}

换句话说,您需要序列化并漂亮地打印 json 节点以获得您想要的格式。