Изменение меток, которые jsonBuilder создает автоматически в Groovy после преобразования Obj в JSON

У меня есть класс с именем Case, который похож на:

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

Я создал несколько таких случаев и добавил их в список. В конце концов я хочу напечатать список в формате JSON в Groovy, как:

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 с увеличенным числом, следует имя. Есть ли способ настроить jsonBuilder в Groovy для этого?

1 ответ

Решение

Как указано в разделе Как изменить JSON в 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": [
    ...
Другие вопросы по тегам