0

次のような 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()

結果は次のようになります。私は 1 つだけを選択しました。

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

listOfCases を Case_1 に置き換えたいので、番号を増やして新しいケースを作成するたびに、名前が続きます。これを行うためにgroovyでjsonBuilderをカスタマイズする方法はありますか?

4

1 に答える 1

1

groovy で JSON を変更する方法 で述べたように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 に答える