Может ли GroovyTemplate, как технология просмотра SpringMVC, создавать JSON? - PullRequest
0 голосов
/ 30 мая 2018

Я хочу сериализовать свои классы данных Java в JSON.Если честно, я отправил соответствующий вопрос несколько дней назад, однако пока не получил своего ответа.На данный момент все ответы предполагают аннотации Джексона.Но я предпочитаю не вовлекать классы напрямую, и я думаю, что лучше делегировать эту работу представлениям.

Тем не менее, я обнаружил, что SpringMVC поддерживает GroovyTemplate, и у меня есть приятный опыт работы с шаблонами Groovy истроители и поэтому у меня есть хорошее представление о них.Но я мог найти шаблоны Groovy для создания только HTML-файлов.Все примеры начинаются с похожих строк:

html {
      head {
      title( ... )
...
      }
}

Есть ли способ написать шаблон Groovy в контексте SpringMVC, который предоставляет JSON?Например, что-то вроде представлений Grails JSON, известных как файлы gson (см. this ).

Я благодарен всем за внимание.

1 Ответ

0 голосов
/ 30 мая 2018

Groovy обладает хорошей функциональностью для создания json.

Ваши классы могут быть легко преобразованы в json:

import groovy.json.*

class SomeClass{
   String name
   int value
   List someList = ['value1', 'value2', 'value3']
}

assert JsonOutput.toJson(new SomeClass(name:'myClass', value: 3)) == 
'{"value":3,"someList":["value1","value2","value3"],"name":"myClass"}'

, также легко создать свой собственный шаблонизатор.Например:

def SOME_CLASS_TEMPLATE = {SomeClass someClass->
   [
      the_json:[
         message: 'Message',
         name: someClass.name,
         first_list_value: someClass.someList?.getAt(0)
      ]
   ]
}

assert JsonOutput.toJson(SOME_CLASS_TEMPLATE(new SomeClass(name:'myClass', value: 3))) == 
'{"the_json":{"message":"Message","name":"myClass","first_list_value":"value1"}}'

форматированный вывод json:

assert JsonOutput.prettyPrint(JsonOutput.toJson(SOME_CLASS_TEMPLATE(new SomeClass(name:'myClass', value: 3)))) == 
'''{
    "the_json": {
        "message": "Message",
        "name": "myClass",
        "first_list_value": "value1"
    }
}'''

Также проверьте другие классы из пакета groovy.json ( JsonGenerator , JsonBuilder ) они могут быть более предпочтительными для ваших задач.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...