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();