Сборка JSON как элемента массива - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть этот код JSON Builder Groovy:

import groovy.json.JsonBuilder
import groovy.json.JsonOutput
import groovy.json.StreamingJsonBuilder

class JSONTest {
    public static main(args) {       
        StringWriter writer = new StringWriter()
        StreamingJsonBuilder builder = new StreamingJsonBuilder(writer)
        builder.requests {
            name 'HSV Maloo'
            make 'Holden'
            year 2006
            country 'Australia'
        }
        String json = JsonOutput.prettyPrint(writer.toString())
        println json
    }
}

Он выводит примерно так:

{
    "requests": {
        "name": "HSV Maloo",
        "make": "Holden",
        "year": 2006,
        "country": "Australia"
    }
}

Но я хочу сделать вывод, подобный этому, со значением запросов в видеэлемент массива:

{
    "requests": [{
        "name": "HSV Maloo",
        "make": "Holden",
        "year": 2006,
        "country": "Australia"
    }]
}

Как я могу изменить вывод?

1 Ответ

0 голосов
/ 16 декабря 2018

Это можно сделать с помощью формы StreamingJsonBuilder DSL, которая позволяет передавать имя элемента, коллекцию и замыкание для перебора коллекции с помощью.

def requests = [
    [name: 'HSV Maloo', make: 'Holden', year: 2006, country: 'Australia']
]

StringWriter writer = new StringWriter()
StreamingJsonBuilder builder = new StreamingJsonBuilder(writer)

builder.requests requests, { request ->
    name request.name
    make request.make
    year request.year
    country request.country
}

String json = JsonOutput.prettyPrint(writer.toString())
println json

Который будет производить:

{
    "requests": [
        {
            "name": "HSV Maloo",
            "make": "Holden",
            "year": 2006,
            "country": "Australia"
        }
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...