JSON.getString не возвращает значение null - программирование

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;
}    
4b9b3361

Ответ 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;
}