@P747

Имеется ли разница в мобильном Java приложении между double и int в JSON ответе?

Вопрос больше к Java разработчикам на Android, имеется ли разница в мобильном Java приложении между double и int в JSON ответе? Тоесть если сервис API ответил JSON структурой, в одном из свойств вместо 0.00 или 5.00 выдало 0 или 5.
Пример:
{"value": 0.00} или {"value": 5.00}
А выдало:
{"value": 0} или {"value": 5}
  • Вопрос задан
  • 164 просмотра
Решения вопроса 3
EreminD
@EreminD
Кое-что умею
у JSON есть только тип number
и 5.0 и 5 - оба значения валидны, с точки зрения JSON

633eab5010109238785685.png

Тут вопрос к тому, кто создает json или кто его интерпретирует.
Готова ли сторона-приемник, что может прилететь число 5.5, например?

Если вам нужен строго int, по-хорошему, должен быть код, который принимает double и пытается преобразовать к инту
Ответ написан
Vest
@Vest
Попробую ответить: если вы работаете с JSON, то стандарт говорит вам следующее:
value:
    ...
    number
    ...

Это то, что может быть в качестве одного из значений. Что такое number?

number
    integer fraction exponent

Или "целое", "(десятичный) разделитель" и "дробная часть".

Как вы понимаете, никто вам ничего не гарантирует. Может быть будет точка, а может и нет. Всё, как в JavaScript. Поэтому, если у вас схема JSON'а неизвестна, то вы можете это трактовать как получится.

Но если это "валюта" или что-то важное, где округление не допустим, то я бы попросил владельца API пересмотреть эту часть
Ответ написан
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Вобщем вики пишет по поводу самого стандарта JSON:
Number: a signed decimal number that may contain a fractional part and may use exponential E notation, but cannot include non-numbers such as NaN. The format makes no distinction between integer and floating-point. JavaScript uses IEEE-754 double-precision floating-point format for all its numeric values (until later also supports BigInt[24]), but other languages implementing JSON may encode numbers differently.


Вобщем получается что стандарту пофиг. И интерпретацию числа он отдает на откуп программным средствам.
И мне кажется что Андроид здесь вообще не при делах. Это слишком общее понятие. Гораздо важнее какой JSON-парсер вы используете в коде. Всего парсеров - огромный вагон. Но я вот регулярно использую 2 из них.
- Google GSON.
- Jackson
Вот попробуйте распарсить ваш документ с использованием г-сона и джаксона и посмотрите что будет на выходе. Там почти всегда рекурсивное дерево из таких шаблонов LinkedHashmap[String,Object] где вместо обжекта будет стоять то что вы ищете.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
26 апр. 2024, в 06:46
1500 руб./в час
26 апр. 2024, в 05:31
1000 руб./за проект