Groovy JsonBuilder,数组内的数组

时间:2017-12-08 10:38:31

标签: arrays json list groovy

我需要使用groovy的JsonBuilder()来构建以下json。

[
  {
    "date": "2017-12-08",
    "dog": [
        {
            "name": "Joe",
            "age": "1"
        },
        {
            "name": "Bro",
            "age": "2"
        },
        {
            "name": "Doe",
            "age": "3"
        }       
    ] 
}
]

我无法在数组中获取数组,因为日期,它总是希望date与dog数组不在同一级别,而是将它放在{}中,如:

[{
    {
    "date": "2017-12-08",
    },
    "dog": [
        {
            "name": "Joe",
            "age": "1"
        },
        {
            "name": "Bro",
            "age": "2"
        },
        {
            "name": "Doe",
            "age": "3"
        }       
    ] 
}
]

1 个答案:

答案 0 :(得分:2)

只需将日期与您的列表一起放在模型中:

import groovy.json.JsonBuilder
import groovy.transform.Canonical

@Canonical
class Dog {
    int age
    String name
}

@Canonical
class DogList {
    String date
    List<Dog> dog
}

def ark = [
    new DogList('2017-12-08', [
        new Dog(1, 'Joe'),
        new Dog(2, 'Bro'),
        new Dog(3, 'Doe')
    ])
]

def json = new JsonBuilder(ark).toPrettyString()
println json

打印:

[
    {
        "date": "2017-12-08",
        "dog": [
            {
                "age": 1,
                "name": "Joe"
            },
            {
                "age": 2,
                "name": "Bro"
            },
            {
                "age": 3,
                "name": "Doe"
            }
        ]
    }
]