java - JSON.getString no devuelve nulo
org.json (1)
Recibí una respuesta de un servidor y estoy esperando un valor de cadena, así que escribí esto para analizarlo
public String getMessageFromServer(JSONObject response) {
String msg = response.getString("message");
return msg;
}
luego, cuando uso esto en mi código y obtengo un valor null
del servidor, la función no devuelve null
, en su lugar devuelve "null"
.
He visto este informe de error , pero no veo una solución.
EDITAR:
Tengo un pequeño truco para resolver esto, pero es feo y estoy buscando una mejor solución:
public String getMessageFromServer(JSONObject response) {
Object msg = response.get("message");
if(msg == null) {
return null;
}
return (String) msg;
}
EDICIÓN # 2:
Después de años, volviendo a esta pregunta, veo que no estaba completamente equivocado aquí y que JSONObject
tiene un método incorporado para esto.
La forma de obtener un valor opcional de un JSONObject
es mediante el uso de este método JSONObject.optString("message", DEF_VALUE);
El hack se ve bien para tu situación.
La otra opción sería utilizar el método boolean isNull(String key)
y luego, en función del valor booleano devuelto, proceda con su opción. Algo como:
public String getMessageFromServer(JSONObject response) {
return ((response.has("message") && !response.isNull("message"))) ? response.getString("message") : null;
}
Pero entonces, no creo que haya mucha diferencia entre la implementación actual y esto.