java json org.json

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.