Collections 有没有办法以可复制的格式打印Groovy集合?

Collections 有没有办法以可复制的格式打印Groovy集合?,collections,groovy,format,Collections,Groovy,Format,出于单元测试的目的,我通常不得不模拟一些数据响应。我希望能够收集到真实的回应,并将其放在模拟中。但是Groovy打印出集合而不包含字符串值 def foo = ["foo":"bar"] println foo def bar = ["foo","bar"] println bar 返回 [foo:bar] [foo, bar] 因此,当我有一个庞大而复杂的json结构要处理时,我必须花很长时间进行乏味且容易出错的编辑。我可能可以编写一个递归函数来打印它,但我想知道是否有一种简单的方法可以

出于单元测试的目的,我通常不得不模拟一些数据响应。我希望能够收集到真实的回应,并将其放在模拟中。但是Groovy打印出集合而不包含字符串值

def foo = ["foo":"bar"]
println foo
def bar = ["foo","bar"]
println bar 
返回

[foo:bar]
[foo, bar]

因此,当我有一个庞大而复杂的json结构要处理时,我必须花很长时间进行乏味且容易出错的编辑。我可能可以编写一个递归函数来打印它,但我想知道是否有一种简单的方法可以先完成它。

不幸的是,没有简单的方法,但是您可以自己实现它。临时解决方案:

class L extends LinkedList {
    String toString() {
        '[' + collect { "'$it'" }.join(',') + ']'
    }
}

def l = new L()
l << 1
l << 2
assert l.toString() == "['1','2']"

不幸的是,没有简单的方法,但是您可以自己实现它。临时解决方案:

class L extends LinkedList {
    String toString() {
        '[' + collect { "'$it'" }.join(',') + ']'
    }
}

def l = new L()
l << 1
l << 2
assert l.toString() == "['1','2']"

对于平凡的数据类型,有:


对于平凡的数据类型,有:


'['+list.collect{'$it'}.join(',')+']'
更简单不?groovy.json.JsonOutput有意义。我可以在我的测试类中将json重新清理回Groovy映射中。
'['+list.collect{'$it'}.join(',')+']'
更简单不?Groovy.json.JsonOutput有意义。我可以在我的测试类中将json重新整理成Groovy映射。啊,太棒了!我知道有一种懒惰的方式。啊,太棒了!我知道有一种懒惰的方式。
def m = [a:'a', b:42, c:[1,2,3]]
def d = m.inspect()
assert d=='''['a':'a', 'b':42, 'c':[1, 2, 3]]'''
m2 = Eval.me(d)
assert m==m2