cJSON: Формат полей для вложенных структур

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Дед Пахом »

Вижу, что остались проблемы с массивами вложенных групп (group,dim(n)), буду вечером чинить.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Где-то во временном пространстве такое уже было ...
"Декабристы разбудили Герцена. Герцен развернул революционную агитацию." (C) В.И. Ленин
Я молчу со своими идеями не из скромности, а что бы не создавать завал и не замыливать предыдущие. :idied:
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Дед Пахом »

Обновил до v1.28 на GitHub. Массивы групп починил.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Есть небольшое несовпадение описания в справке и работы класса с форматами.
Если задать в опции для тега формат выгрузки значений:

Код: Выделить всё

  '[{{"name":"Summa","Format":"@n_13.2"}]'
То результат будет:

Код: Выделить всё

  "summa": "       136.00",
Может быть здесь нужен Trim() результата ? А то какие-то странные числа выгружаются. :shock:
Спасибо ! :D
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Дед Пахом »

Что FORMAT(summa, @n_13.2) возвращает, то Вы и получаете. А почему REAL нельзя использовать? Будут нормальные числа выгружаться.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Дед Пахом писал(а): 09 Декабрь 2022, 0:38 А почему REAL нельзя использовать
Если Вы спрашиваете про тип данных - то да, конечно, REAL и используется.
Но хочется ведь получить в JSON нормальное форматированное число, а не результат жизнедеятельности FORMAT() "AsIs".
В каких сложных жизненных ситуациях может потребоваться использование тега вида "______________1.23" ? ;)
(даже форум не отображает кучу пробелов между кавычками - Ave, Admin-у !)

В прошлом сообщении - я делал ссылку на справку.
Здесь всё красиво ... но ведь только для чисел с 4-мя целыми разрядами. А если вывести число 1.23 ?

1.jpg
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Admin »

Игорь Столяров писал(а): 09 Декабрь 2022, 8:30 форум не отображает кучу пробелов между кавычками
Это не форум а html такой.
По теме:
Наверное по дефолту все таки стоит у всего вставляемого контента отрезать пробелы с обоих сторон.
Но встречал дурные схемы, так что тогда нужна опция на всякий случай Trim=FALSE
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Дед Пахом »

Format вообще-то был введён для даты и времени.
Могу посоветовать форматировать числа при заполнении очереди.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Дед Пахом писал(а): 09 Декабрь 2022, 11:44 Format вообще-то был введён для даты и времени.
И здесь тоже используем с огромной благодарностью.
Вручную можно отформатировать всё - вопросов нет, спасибо. :)

Просто непонятно зачем в строке JSON левые пробелы для чисел ?
Просто из-за того, что Format() в языке Clarion не имеет гашения незначащих пробелов ?
Там где будут парсить такой JSON вряд ли знают о существовании Clarion ... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Я понимаю, что гипотетически сдвиг влево всех строк может нарушить совместимость.
Может быт проверять значение на Numeric() или действительно как-то явно опционально ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Дед Пахом »

Уболтали.
Вижу 2 варианта:

1. Опция "FormatLeft":true дополняет опцию Format. Пример:

Код: Выделить всё

'[{{"name":"Summa","Format":"@n_13.2","FormatLeft":true}]'
2. Опция "FormatLeft":"@n13.2" полностью заменяет опцию Format. Пример:

Код: Выделить всё

'[{{"name":"Summa","FormatLeft":"@n_13.2"}]'
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Я за второй вариант ! Просто и понятно.
Не надо плодить уточняющие флаги.
Круто: "FormatLeft" ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

cJSON: Формат полей для вложенных структур

Сообщение Дед Пахом »

Проверяйте FormatLeft, заодно и parser.Parse(IDynStr) можно протестировать.
Вложения
cjson.clw
(80.93 КБ) 18 скачиваний
cjson.inc
(25.5 КБ) 18 скачиваний
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7332
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

cJSON: Формат полей для вложенных структур

Сообщение Игорь Столяров »

Дед Пахом писал(а): 09 Декабрь 2022, 13:33 FormatLeft, заодно и parser.Parse(IDynStr)
Ура ! Пошла отгрузка по заявкам трудящихся ! :) Проверил - всё работает ! :ty:
Конечно Parse(IDynStr) теперь много где нужно переделать - но это приятные хлопоты. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4566
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

cJSON: Формат полей для вложенных структур

Сообщение finsoftrz »

Хорошо бы для подобных библиотек побольше примеров практического использования. Например, если мне нужно что-то сделать на php или vbscript, это гуглится, и практически всегда можно найти работающий код. А в библиотеках на кларионе из-за того, что мало народа использует, надо тратить немало усилий и времени, чтобы понять, как что-то сделать в конкретном случае.
C6/C11, ШВС, tps/btrieve.
Закрыто