Имя: Пароль:
1C
 
Как Записать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) Ну почти описание моего метода, только без проверки на целочисленность.