Desde el aspecto de su código, parece que está intentando crear una cadena JSON usted mismo, utilizando una matriz de tipo Object. Mi única conjetura sobre por qué esto no funciona es que GSON (la biblioteca JSON en uso por juego) no sabe cómo convertir eso en pares clave-valor (aunque su matriz es bidimensional). Entonces, ¿cómo trata de cambiar a statusArray
cadena y su contenido a:
{
"Status": "401",
"Message": "Unauthorized",
"Detail": "No API Key Supplied"
}
poner esto en renderJSON(statusArray)
y que debe estar bien.
Como alternativa se podría crear una plantilla simple .json
como la siguiente:
{
"Status": ${status},
"Message": ${message},
"Detail": ${detail}
}
y llamaremos a partir de un método de control a través render(status, message, detail)
. status
, message
y detail
siendo Strings aquí también. Ejemplo método controlador:
public static void loginFail(final String status, final String message, final String detail) {
render(status, message, detail);
}
y su plantilla sería llamado loginFail.json
(el nombre del método de controlador). De esta forma puede llamar al método del controlador en cualquier lógica que tenga para verificar el inicio de sesión. Una vez que el inicio de sesión falla, especifique por qué eso (a través del estado, el mensaje y los detalles) llamando al método loginFail
.
Es también digno de mención que renderJSON puede tomar un argumento de cadena, así, que no pasa por el análisis GSON. Esto es útil si utiliza algo como Jackson para su análisis JSON (como hago yo). –