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 节点以获得您想要的格式。
我是 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 节点以获得您想要的格式。