Судя по внешнему виду вашего кода, вы пытаетесь создать строку JSON самостоятельно, используя массив типа Object. Мое единственное предположение относительно того, почему это не работает, заключается в том, что GSON (библиотека JSON, используемая play) не знает, как преобразовать это в пары ключ-значение (хотя ваш массив является двумерным). Так как насчет изменения statusArray
на String и его содержимого на:
{
"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
.