Как прочесть значение из JSON на Java?

227
13 марта 2018, 02:31

Как извлечь в переменную типа int число 2 из JSON-ответа на языке JAVA ? (вместо 2 может быть любое многозначное число)

{
"response": 2
}

Без использования сторонних библиотек.

Answer 1

Ну можно так :)

String json = "{\"response\": 2}";
int number = Integer.valueOf(json.substring(13, 14));

Но почему бы не использовать GSON или Jackson?

Answer 2

Можно например использовать регулярки, но тоже выходит не очень универсально. Если структура ответа будет отличаться, придётся руками вырезать лишнее.

Пример:

public static void main(String[] args) {
    List<String> tmp = new ArrayList<>();
    tmp.add("{\"response\": 2}");
    tmp.add("{\"response\": 0}");
    tmp.add("{\"response\": null}");
    tmp.add("{\"response\": 11}");
    tmp.add("{\"response\": 111}");
    tmp.add("{\"response\": 1111}");
    tmp.add("{\"response\": 11111}");
    tmp.add("{\"response\": -1111111}");
    tmp.forEach(a -> {
        System.out.println(parseJsonInt(a));
    });
}
public static Integer parseJsonInt(String json) {
    Pattern p = Pattern.compile("-?\\d+");
    Matcher m = p.matcher(json);
    while (m.find()) {
        return Integer.valueOf(m.group());
    }
    return null;
}
Answer 3

Спасибо за ответы, нашел решение задачи:

  1. Импортируем библиотеки:

    import org.json.JSONException;
    import org.json.JSONObject;
    
  2. В нужном месте пишем код:

    int myNumber;                
    try {
        myNumber = response.json.getInt("response");
    } catch (JSONException e) {
        e.printStackTrace();
    }
    

    В итоге в переменной myNumber получаем наше число. Импортированные библиотеки уже входят "в комплект" AndroidStudio, дополнительно их не надо скачивать.

READ ALSO
Вопрос про авторизацию FireBase

Вопрос про авторизацию FireBase

Мне нужно сделать авторизацию по номеру телефонаВ принципе с задачей я уже справился следующим образом:

181
Значения перечисления в switch-case блоке

Значения перечисления в switch-case блоке

У меня есть простое перечисление:

157
Сравнение строк из базы данных с переменной (SQLite)

Сравнение строк из базы данных с переменной (SQLite)

Подскажите пожалуйста, пишу приложение на андроид и есть необходимость вытащить строку с определённым строковым значением которое задано...

184
Как сохранить массив в базу данных SQLite?

Как сохранить массив в базу данных SQLite?

Подскажите пожалуйста, как реализовать хранение массива в базе данных? Долго гуглил, но толком ничего не понялЕсли можно, то объясните подробно

185