Преобразование скорости отклика в JSON - PullRequest
2 голосов
/ 11 января 2012

Я использую распорки 2 и шаблоны скорости для генерации ответа JSON.Теперь улов заключается в том, что ответ не генерируется с использованием некоторого плагина скорости JSON. Это просто строка, которая появляется, когда скорость выполняется с ее разбором и обработкой ответа, а на стороне клиента я делаю eval , чтобы получить ответот строки до JSON.

Что мне действительно нужно, так это какое-то решение на стороне скорости или распорок, где после того, как результат сгенерирован по скорости, фреймворк должен вызвать мой API, где я могу преобразовать выходные данные файла vm.в JSON, используя мою собственную логику.Как этого добиться?

Например:

  1. В браузере с использованием JavaScript я разработал виджет дерева, который я использую для отображения комментариев в древовидной структуре.
  2. Скажитепользователь нажимает кнопку комментариев.
  3. Мой виджет пользовательского интерфейса запустит AJAX для получения данных для комментариев.
  4. Этот запрос перехватывается инфраструктурой STRUTS 2.
  5. Он вызовет, скажем, getComments() API действия и заполнит массив arrayList объектом комментария, скажем, cmt.
  6. Теперь ответ обрабатывается шаблоном скорости (*. Vm).
  7. Сейчас в vm я пишу такой код:

    { "CommentsData" : [
    
        #set($sep="")
        #foreach($c in $cmt)
        $sep
        {
            "commentText" : $c.getText()
        }
        #set($sep=",")
        #end
    
    }
    
  8. Теперь окончательный ответ может получиться следующим образом:

    { "CommentsData" : [
    
        {
            "commentText" : "This is comment 1"
        },
        {
            "commentText" : "This is comment 2"
        },
        {
            "commentText" : "This is comment 3"
        },
        {
            "commentText" : "This is comment 4"
        }`
    
        ]
    }
    
  9. Теперь это может выглядеть как JSON, но это не строгий JSON;Я имею в виду, что если я пропущу где-нибудь ,, то на стороне клиента в JavaScript мой eval может завершиться с ошибкой или JSON.parse() не удастся, но в шаблоне скорости я теперь понимаю, что JSON искажен.

  10. Так что, как только вышеупомянутый шаблон скорости сгенерирован, мне нужен некоторый контроль, где я могу написать некоторый код Java, чтобы сделать некоторые проверки ответа.

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

1 Ответ

1 голос
/ 11 января 2012

Не уверен, как вы используете скорость.Мы не используем скорость при выводе JSON;мы просто создаем конвертируемый объект JSON и выводим его напрямую из контроллеров, используя response.write(jsonObject.toJson()).Таким образом, всегда генерируется правильный JSON.

...