JSON.getString не возвращает значение null
У меня есть ответ, возвращающийся с сервера, и я ожидаю значение String, поэтому я написал это для его разбора
public String getMessageFromServer(JSONObject response) {
String msg = response.getString("message");
return msg;
}
тогда, когда я использую это в своем коде и получаю значение null
с сервера, функция не возвращает null
, вместо этого возвращает "null"
.
Я видел этот отчет об ошибках, но я не вижу решения.
EDIT:
У меня есть небольшой взлом, чтобы решить это, но он уродлив, и я ищу лучшее решение:
public String getMessageFromServer(JSONObject response) {
Object msg = response.get("message");
if(msg == null) {
return null;
}
return (String) msg;
}
Ответы
Ответ 1
Взлом выглядит хорошо для вашей ситуации.
Другой вариант - использовать метод boolean isNull(String key)
, а затем на основе возвращаемого логического значения перейти к вашей опции. Что-то вроде:
public String getMessageFromServer(JSONObject response) {
return ((response.has("message") && !response.isNull("message"))) ? response.getString("message") : null;
}
Но тогда я не думаю, что существует большая разница между вашей текущей реализацией и этим.
Ответ 2
Также возможно,
public String getMessageFromServer(JSONObject response) {
String msg = response.getString("message", null);
if(msg == null) {
return null;
}
return msg;
}