![]() |
|
Как ЗаписатьJSON целое число как дробное | ☑ | ||
---|---|---|---|---|
0
MM
22.08.19
✎
08:48
|
Для решения одной задачи интеграции требуется создать JSON-строку, в которую кодируются вложенные друг в друга массивы и структуры, а также примитивные типы строки и числа. Процедура ЗаписатьJSON решает эту задачу за одним исключением, если число целое (тип число с дробной частью), то оно записывается в JSON без знака точки и 0 после неё. Может ли кто-нибудь предложить удобный способ передать в строку JSON дробные числа, так что бы была видна их дробность?
Сейчас используемое решение очень не изящное. Так же, не хотелось бы отказываться от быстрой и удобной процедуры ЗаписатьJSON. |
|||
1
ДенисЧ
22.08.19
✎
08:50
|
А зачем? Ты потом этот жисон глазами читаешь?
|
|||
2
Cyberhawk
22.08.19
✎
08:53
|
Кроме как ЗаписатьЗначение вариантов нет
|
|||
3
MM
22.08.19
✎
08:54
|
Сторонняя программа выдаёт ошибку, если не передавать дробные числа с точкой.
|
|||
4
Cyberhawk
22.08.19
✎
08:54
|
Ну если не рассматривать ручное (кусочное) формирование ЖСОН-строки, либо ее пост-обработка
|
|||
5
ДенисЧ
22.08.19
✎
08:55
|
(3) А откуда она знает, что это дробное, если у числа нет дробной части?
|
|||
6
Cyberhawk
22.08.19
✎
08:55
|
Добавляй в целые числа дробную часть-маркер, потом пост-обработкой заменяй ее на ".00"
|
|||
7
Cyberhawk
22.08.19
✎
08:56
|
А случайно дробные числа не в кавычках в результате получаются? Тогда вообще пишешь все числа как строки и дело в шляпе.
|
|||
8
MM
22.08.19
✎
08:56
|
(4), (6) Так и сделал предобработка вложенных массивов и структур, пост обработка строки, это не красиво.
(5) По типу переменной |
|||
9
MM
22.08.19
✎
09:03
|
(7) В примерах суммы и проценты это числа с двумя знаками (хотя можно и с одним), количество с тремя, версия сообщения и тип товара целое число.
|
|||
10
arsik
гуру
22.08.19
✎
09:08
|
(9) Пиши строкой
|
|||
11
DrZombi
гуру
22.08.19
✎
09:16
|
Формат(ЧислоЦелое,"ЧДЦ=1; ЧН=0.0; ЧГ=")
|
|||
13
DrZombi
гуру
22.08.19
✎
09:16
|
Формат(ЧислоЦелое,"ЧДЦ=3; ЧН=0,000; ЧГ=")
|
|||
14
ДенисЧ
22.08.19
✎
09:19
|
Очевидно, что "другая программа" крива до безобразия. Если она косячит в таком пустяке, то, может и в другим местах она не лучше?
|
|||
15
DrZombi
гуру
22.08.19
✎
09:20
|
(14) скорей всего писатель той программы писал топорно :)
|
|||
16
MM
22.08.19
✎
09:45
|
(11) Это должны быть числа, а не строки в JSON, без кавычек.
(14) Нет выбора, альтернатива только надстройка над этой системой. И похоже обработка данных ведётся аппаратно. (15) Как и остальные от этого заказчика разработки. |
|||
17
DrZombi
гуру
22.08.19
✎
09:54
|
(16) JSON, это строка, текст, набор буковок. :)
|
|||
18
DrZombi
гуру
22.08.19
✎
09:55
|
+(16) https://ru.wikipedia.org/wiki/JSON
JSON (англ. JavaScript Object Notation, обычно произносится как /ˈdʒeɪsən/ JAY-sən [2]) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан Дугласом Крокфордом[3]. Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается независимым от языка и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON. |
|||
19
Cyberhawk
22.08.19
✎
09:56
|
(17) Что-то ты тупишь. Говорят же тебе требования такие, что числа внутри строки ЖСОН не должны быть в кавычках.
|
|||
20
Cyberhawk
22.08.19
✎
09:57
|
(8) "пост обработка строки, это не красиво" // Таков наш удел: там, где другие обос*утся, мы можем :) Невзирая на моральные страдания
|
|||
21
ptiz
22.08.19
✎
09:59
|
(0) Записывать числа как строку с префиксом, типа: "@№$1.0"
Потом всю JSON строку обработать напильником. |
|||
22
ptiz
22.08.19
✎
10:00
|
ой, про это было, сорян :)
|
|||
23
DrZombi
гуру
22.08.19
✎
10:04
|
Почему дробные числа в JSON заключаются в кавычки?
http://www.cyberforum.ru/php-beginners/thread1769464.html Как передать целое число как параметр в запрос POST в Volley? http://qaru.site/questions/15033016/how-to-pass-integer-as-parameter-in-post-request-in-volley |
|||
24
DrZombi
гуру
22.08.19
✎
10:05
|
(21) У него нет напильника. ТС не может решить, как ему писать, в кавычках или без :)
|
|||
25
DrZombi
гуру
22.08.19
✎
10:07
|
(19) Тогда получается ТС должен JSON файлик генерить руками...
Если точнее, то программа для которой он пишет использует свой формат, отдаленно напоминающий JSON ^) |
|||
26
MM
22.08.19
✎
12:05
|
(21) Ах если бы были встроенные регэкспы, это было бы куда удобнее сделать.
(24) Точно известно, что числа пишутся в JSON без кавычек. (25) Эта строка полностью соответствует стандарту JSON, есть только дополнительное требование к большинству чисел. |
|||
27
Cyberhawk
22.08.19
✎
12:29
|
(25) "программа для которой он пишет использует свой формат, отдаленно напоминающий JSON" // Ты что-то придумываешь. Числа с точками и дробными частями в виде чисел, а не строк, в ЖСОНе вполне себе разрешены.
|
|||
28
Вафель
22.08.19
✎
12:46
|
руками придется формировать строку.
ничего не поделаешь |
|||
29
ptiz
22.08.19
✎
12:51
|
Самый простой вариант: вместо целых чисел записывать ЦелоеЧисло+0.987654321
А потом - замена .987654321 на .0 |
|||
30
ptiz
22.08.19
✎
12:51
|
одной командой СтрЗаменить
|
|||
31
MM
22.08.19
✎
13:20
|
(27) Вот только 1С при записи отбрасывает точку и всё что после неё, если там 0. И уговорить его этого не делать я не смог.
(29), (30) Ну почти описание моего метода, только без проверки на целочисленность. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |