С точки зрения вашего кода кажется, что вы пытаетесь создать строку JSON самостоятельно, используя массив типа Object. Мое единственное предположение о том, почему это не работает, - это то, что GSON (библиотека JSON, используемая при воспроизведении) не знает, как преобразовать это в пары ключ-значение (хотя ваш массив является двумерным). Так как об изменении statusArray
в строку и его содержание в:
{
"Status": "401",
"Message": "Unauthorized",
"Detail": "No API Key Supplied"
}
Пут, что в renderJSON(statusArray)
и вы должны быть хорошо.
В качестве альтернативы вы можете создать простой шаблон .json
как следующее:
{
"Status": ${status},
"Message": ${message},
"Detail": ${detail}
}
и вызывать его из метода контроллера с помощью render(status, message, detail)
. status
, message
и detail
, являющийся также строками. Пример Способ управления:
public static void loginFail(final String status, final String message, final String detail) {
render(status, message, detail);
}
и ваш шаблон будет называться loginFail.json
(имя метода контроллера). Таким образом, вы можете вызвать метод контроллера в любой логике, которую вы должны проверить для входа. После неудачного входа в систему вы указываете, почему это (через статус, сообщение и данные), вызвав метод loginFail
.
Стоит также отметить, что renderJSON может принимать строковый аргумент, как хорошо, что минует синтаксический анализ GSON. Это полезно, если вы используете что-то вроде Jackson для разбора JSON (как и я). –