Как получить значение с плавающей точкой из объекта JSON в Java

JSONObject — это неупорядоченная коллекция пар имя / значение. Его внешняя форма представляет собой строку, заключенную в фигурные скобки с двоеточиями между именами и значениями и запятыми между значениями и именами. Внутренняя форма — это объект, имеющий методы get и opt для доступа к значениям по имени, а также методы для добавления или замены значений по имени.

В Java вы можете импортировать этот класс, используя import org.json.JSONObject, Объекты типа JSONObject есть много полезных методов для получения любых их значений, например getBoolean, getInt , getString , getDouble или же getLong, Эти методы возвращают значение, сопоставленное его имени, если оно существует, и преобразуют их в определенный тип (в соответствии с именем):

JSONObject myObject = new JSONObject("{ \"anyString\":\"Hello World\", \"aNumber\": 123, \"aDouble\": -895.25 }");
myObject.getString("anyString"); // Hello World
myObject.getNumber("aNumber"); // 123
myObject.getDouble("aDouble"); // -895.25

К сожалению, для значений с плавающей запятой (чисел с десятичными числами) нет такого метода, как getFloat который возвращает требуемый тип. Если вы хорошо разбираетесь в математике и программировании, вы будете думать, что getDouble функция может помочь вам с таким числом, как +12345678987,00 , Однако это обеспечит 1.2345678987E10 как результат и с getLong вы будете удалять десятичные дроби.

Получить значение с плавающей точкой из элемента JSON Object

Чтобы достичь своей цели — получить элемент из объекта JSON типа Float, вы можете использовать класс Big Decimal. Класс BigDecimal предоставляет операции для арифметики, манипуляции с масштабом, округления, сравнения, хеширования и преобразования формата. Класс BigDecimal дает пользователю полный контроль над поведением округления. Если режим округления не указан и точный результат не может быть представлен, генерируется исключение; в противном случае вычисления могут быть выполнены с выбранной точностью и режимом округления путем предоставления соответствующего объекта MathContext для операции. В любом случае предусмотрено восемь режимов округления для контроля округления.

Импортируйте класс BigDecimal, используя следующую инструкцию в верхней части вашего класса:

import java.math.BigDecimal;

И затем, все, что вам нужно сделать, это предоставить двойное значение (которое возвращает экспоненциальное значение) из элемента, который вам нужен, из объекта JSON в качестве первого параметра для BigDecimal.valueOf метод и из возвращенного значения выполнить floatValue метод:

JSONObject myObject = new JSONObject("{ \"anyString\":\"Hello World\", \"aNumber\": 123, \"aDouble\": 12345678987.00 }");
float myFloatValue = BigDecimal.valueOf(myObject.getDouble("aDouble")).floatValue();
Ссылка на основную публикацию
Adblock
detector