0

我有一个名为 Case 的类,就像:

class Case {
   String caseId;
   Map <String, List<String[]>> listOfCases = new HashMap<String, ArrayList<String[]>>();
}

我创建了几个这样的案例并将它们添加到列表中。最终我想以 groovy 的 JSON 格式打印列表,例如:

for (...){
   // creating many of these cases in a loop and adding to caseList
   caseList.add(myCase);
}
// Finally printing them
println new JsonBuilder( caseList ).toPrettyString()

结果是这样的,我只选了一个:

{
    "caseId": "Case_1",
    "listOfCases": {
        "server-config.xml": [
            [
                "Core",
                "8"
            ]
        ],
        "server-beans.xml": [
            [
                "plugin",
                "mmap"
            ],
            [
                "maxIdle",
                "16"
            ],
            [
                "minIdle",
                "16"
            ],
            [
                "maxCon",
                "16"
            ]
        ]
    }
}

我希望将 listOfCases 替换为 Case_1 ,因此每次我创建一个编号递增的新 Case 时,名称如下。无论如何要在 groovy 中自定义 jsonBuilder 来做到这一点?

4

1 回答 1

1

How to modify JSON in groovy 中所述,更改content是危险的,因为它试图更改原始对象。那里提出的解决方案是发送正确的地图。

你可以从你的数据中准备一张地图,然后像这样传递:

class Case {
    String caseId
    Map<String,List<List<String>>> listOfCases
}

def caseList = (1..3).collect{
    new Case(caseId: "Case$it", listOfCases: [ 'abcde': [['1','2'],['4','5']]])
}

println new groovy.json.JsonBuilder(caseList.collect{[caseId: it.caseId, "$it.caseId": it.listOfCases]}).toPrettyString()

结果是

[
    {
        "caseId": "Case1",
        "Case1": {
            "abcde": [
    ...
于 2014-10-09T16:58:53.277 回答