Можно ли получить null из getString, используя JSONLib - PullRequest
2 голосов
/ 08 апреля 2011

Я использую JSON-lib для анализа объекта и чтения строки из него.Это нормально работает для правильной строки, но также может быть нулевымНапример:

JSONObject jsonObject = JSONObject.fromObject("{\"foo\":null}");
String str = jsonObject.getString("foo");

В этом случае я бы ожидал, что str будет null, но вместо этого "null".При вызове любого другого метода возникает ошибка.В любом случае, есть ли JSONLib для анализа строки, если значение является строкой, но для возврата ноль, если значение равно нулю?

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

JSONObject.java:

/**
* Get the string associated with a key.
*
* @param key A key string.
* @return A string which is the value.
* @throws JSONException if the key is not found.
*/
public String getString( String key ) {
    verifyIsNull();
    Object o = get( key );
    if( o != null ){
        return o.toString();
    }
    throw new JSONException( "JSONObject[" + JSONUtils.quote( key ) + "] not found." );
}

Вы можете видеть, что getString () никогда не возвращает ноль.Он может возвратить «ноль», если o.toString () сделает это, но это будет String, а не значение NULL

1 голос
/ 13 июня 2012

Это ошибка JSONLib, о которой сообщалось.

https://github.com/douglascrockford/JSON-java/issues/5

Обновление jsonlib до последней версии, вероятно, исправит это.

1 голос
/ 11 апреля 2011

Я не смог найти хороший способ сделать это, поэтому вместо этого переключился на Джексон . Это позволяет мне сделать:

JsonNode json = (new ObjectMapper()).readValue("{\"foo\":null}", JsonNode.class);
json.get("stopType").getTextValue();

Что вернет null для этого примера, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...