Является ли JsonElement целым или плавающим? - PullRequest
0 голосов
/ 13 ноября 2018

Можно ли определить, является ли экземпляр GSON JsonElement целым числом или это число с плавающей точкой?

Я могу определить, является ли это число:

JsonElement value = ...
boolean isNumber = value.getAsJsonPrimitive().isNumber();

Но как определить, является ли это целое число или число с плавающей точкой, чтобы впоследствии я мог использовать правильный метод преобразования?

float f = value.getAsJsonPrimitive().getAsFloat();

или

int i = value.getAsJsonPrimitive().getAsInt();

Редактировать: Другой вопрос может ответить, почему это не может быть реализовано в GSON, но этот вопрос определенно не является его дубликатом.

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Единственный способ, который я нашел до сих пор, это использование регулярных выражений в строке:

if (value.getAsJsonPrimitive().isNumber()) {
    String num = value.getAsString();
    boolean isFloat = num.matches("[-+]?[0-9]*\\.[0-9]+");
    if (isFloat)
        System.out.println("FLOAT");
    else
        System.out.println("INTEGER");
}

Это правильно определяет 123 как целое число, а также 123.45 и 123.0 как числа с плавающей запятой.

0 голосов
/ 13 ноября 2018

используйте что-то подобное, и поэтому, если возвращаемый объект json является экземпляром с плавающей точкой или целым числом, вы можете применить требуемое значение get:

JSONObject jObj = new JSONObject(jString);
Object aObj = jObj.get("a");
if(aObj instanceof Integer){
    System.out.println(aObj);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...