如何在Groovy中定制JSONBuilder结果?
下面的Groovy代码生成当前结果下显示的结果。如何定制预期输出中所示的JSON输出 当前结果如何在Groovy中定制JSONBuilder结果?,groovy,Groovy,下面的Groovy代码生成当前结果下显示的结果。如何定制预期输出中所示的JSON输出 当前结果 { "clients": [ { "ID": 1, "NAME": "ABC", "ADDR1": "123 MAIN ST", "ADDR2": "NEW YORK", "ZIP": "12345" }, {
{
"clients": [
{
"ID": 1,
"NAME": "ABC",
"ADDR1": "123 MAIN ST",
"ADDR2": "NEW YORK",
"ZIP": "12345"
},
{
"ID": 2,
"NAME": "XYZ",
"ADDR1": "321 MAIN ST",
"ADDR2": "NEW JERSEY",
"ZIP": "98761"
}
]
}
我需要在每一行中循环并自定义吗
预期的
{
"clients": [
{
"ID": 1,
"NAME": "ABC",
"CONTACT": {
"ADDR1": "123 MAIN ST",
"ADDR2": "NEW YORK",
"ZIP": "12345"
}
},
{
"ID": 2,
"NAME": "XYZ",
"CONTACT": {
"ADDR1": "321 MAIN ST",
"ADDR2": "NEW JERSEY",
"ZIP": "98761"
}
}
]
}
下面的代码应该可以工作(但我不确定,因为没有提供完整的示例):
试试看,如果有任何问题请告诉我。你知道它是怎么工作的吗?它工作得很好。非常感谢。我是Groovy的新手,我知道元编程结构在这里很有用,其中为ID、NAME等键添加了一个动态方法。等等,我不确定我是否正确,但我还没有深入探索这个领域。如果你能简单解释一下它的工作原理,我将不胜感激。不客气。它与元编程无关。这里使用
collect
语句,它将给定的闭包应用于集合的每个元素,并返回修改后的集合。您需要阅读groovy基础知识-集合、闭包。真的很简单,谢谢。我熟悉闭包和groovy迭代器模式。我以为你在问JSONBuilder是如何工作的。我猜JSONBuilder接受任何对象作为输入,并将每个字段或键值转换为JSON元素。这件事我还没有证实,还需要进一步挖掘。哦,很抱歉误解了。是的,这或多或少就是它的工作原理。
{
"clients": [
{
"ID": 1,
"NAME": "ABC",
"CONTACT": {
"ADDR1": "123 MAIN ST",
"ADDR2": "NEW YORK",
"ZIP": "12345"
}
},
{
"ID": 2,
"NAME": "XYZ",
"CONTACT": {
"ADDR1": "321 MAIN ST",
"ADDR2": "NEW JERSEY",
"ZIP": "98761"
}
}
]
}
println new JsonBuilder(clients:resultset.collect {[
ID: it.ID,
NAME: it.NAME,
CONTACT: [
ADDR1: it.ADDR1,
ADDR2: it.ADDR2,
ZIP: it.ZIP,
],
]}).toPrettyString()