Меня интересует главным образом не новый функционал (работает/нет или не так), а не отвалилось ли что-нибудь в старом? Изменения были не косметические, так что могло. Я проверил на самых простых примерах, но хорошо бы на реальных.- NEW: json::CreateArray(*GROUP[],...) overloaded functions create json array from passed array of groups.
- NEW: ToGroupArray(*GROUP[],...) overloaded methods save json array to a GROUP array.
- NEW: Options now can be passed as a cJSON object as well.
- FIX: Performance issue with the options.
v1.46
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
- Дед Пахом
- Старичок
- Сообщения: 3217
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 12 раз
- Поблагодарили: 41 раз
- Контактная информация:
v1.46
Положил обновление v1.46 на наш публичный фтп в папку /cjson/1.46.0. Пока изменения такие:
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
v1.46
Я тестирую релиз 1.46 с момента его выхода на всех своих (и не только) реальных проектах.
Если были бы вопросы - обязательно сообщил !
Если были бы вопросы - обязательно сообщил !
Make Clarion Great Again !
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
v1.46
Действительно, такой вопрос был года 2-3 назад ...
Мы тогда (с Вашей помощью) понавтыкали индикаторов загрузки через rh.ArrayCB() и как-то приняли реальность.
Мы тогда (с Вашей помощью) понавтыкали индикаторов загрузки через rh.ArrayCB() и как-то приняли реальность.
Make Clarion Great Again !
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
v1.46
По практике применения опций:v1.46 (04.10.2024)
NEW: (Experimental) Field names in options now can be specified as an array. For example this option: {"name":["password","salary"], "ignore":true} says that the fields "password" and "salary" should be ignored if "ignore" rule was not explicitly defined in named options.
- 70% опций закрывают косяки Clarion, т.е. это JsonName / IsBool / Instance. И здесь ничего сделать низя. Проехали.
- но 15% опций - это применение Ignore к GROUP, потому что не обрабатывается содержание закрываемой GROUP.
И приходится перечислять весь состав GROUP ... иначе просто вообще разрушается структура данных.
В этом есть какой-то непонятный мне смысл ? И так как нет возможности указывать указывать место тега в структуре,
то происходит закрытие тега по имени во всех местах ... что уже совсем неправильно.
Данная опция, конечно, упрощает закрытие GROUP ... но может быть есть смысл решить вопрос полностью ?
Т.е. {"name":"GroupName", "ignore":true} закрывает GroupName со всем её содержимым. Спасибо !
Make Clarion Great Again !
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
v1.46
Спасибо за хороший вопрос !
Я поясню на примере ...
Есть структура данных, в которой мне не нужны все вложенные GROUP
Здесь проблема даже не в том, что выгружены поля, которые не нужны.
А в том, что структура разрушена: field2 и весь group3 "переехали" на уровень вверх.
Я знаю решение и им пользуюсь: перечислять ВСЕ поля во вложенных структурах и
добавлять для них опцию IGNORE ... но это большой и трудно сопровождаемый объём бесполезной работы.
Зачем вообще сделана такая фишка (если это не ошибка) ? Группа должна удаляться со всем её содержимым.
Причём как в выгрузке, так и в загрузке (зачем мусор в содержимом, если я явно указал что мне не нужна ВСЯ группа)
Я поясню на примере ...
Есть структура данных, в которой мне не нужны все вложенные GROUP
Код: Выделить всё
Data
Group1 Group
Field1 Long
Group2 Group
Field2 Bool
Group3 Group
Field3 Real
Field4 Short
end
end
end
Root &cJson
Code
Root &= json::CreateObject(Group1,,'[{{"Name":"Group2","Ignore":true}]')
If Not Root &= Null
Message(Root.ToString(True))
SetClipBoard(Root.ToString(True))
Root.Delete()
end
А в том, что структура разрушена: field2 и весь group3 "переехали" на уровень вверх.
Код: Выделить всё
{
"field1": 0,
"field2": 0,
"group3": {
"field3": 0,
"field4": 0
}
}
добавлять для них опцию IGNORE ... но это большой и трудно сопровождаемый объём бесполезной работы.
Зачем вообще сделана такая фишка (если это не ошибка) ? Группа должна удаляться со всем её содержимым.
Причём как в выгрузке, так и в загрузке (зачем мусор в содержимом, если я явно указал что мне не нужна ВСЯ группа)
Make Clarion Great Again !
- Дед Пахом
- Старичок
- Сообщения: 3217
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 12 раз
- Поблагодарили: 41 раз
- Контактная информация:
v1.46
Я знаю ещё парочку решений: дать ненужным полям атрибут NAME('Unused_field') и добавить опцию {"name":"Unused_field","ignore":true}.
Или просто не включать ненужные поля в структуру. Все наверное так и поступают, так как никто до сих пор не жаловался.
Но если так (не проверял ещё), то это ошибка, конечно, игнорирование группы должно распространяться на всю группу.
Если возникнут ещё вопросы, открывайте новую тему, эту считаю закрытой.
Или просто не включать ненужные поля в структуру. Все наверное так и поступают, так как никто до сих пор не жаловался.
Но если так (не проверял ещё), то это ошибка, конечно, игнорирование группы должно распространяться на всю группу.
Если возникнут ещё вопросы, открывайте новую тему, эту считаю закрытой.
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
v1.46
Нетъ. Структура определяет общий пакет обмена и её состав зависит динамически от запроса.
Даже дело не в этом ... Здесь просто логическое противоречие.
Например есть дорожный знак: АВТОМОБИЛЯМ ВЪЕЗД ЗАПРЕЩЁН.
Никто ведь не пишет под ним:
- Колёсам въезд запрещён;
- Сиденьям въезд запрещён;
- Магнитоле въезд запрещён;
- и т.д.
А мне сейчас приходится для исключение некой составной структуры делать именно так !
Make Clarion Great Again !
- Игорь Столяров
- Ветеран движения
- Сообщения: 7636
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 23 раза
- Поблагодарили: 65 раз
v1.46
Я этот вопрос задавал где-то вот здесь ...
viewtopic.php?t=4941&hilit=Ignore&start=165
Но было сказано - для исключения перечислять все поля поля в структуре, что я молча и делал.
Сегодня просто увидел новую фишку с массивом имён в опциях и сразу подумал, что здесь её можно применить.
Make Clarion Great Again !
- Дед Пахом
- Старичок
- Сообщения: 3217
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 12 раз
- Поблагодарили: 41 раз
- Контактная информация:
v1.46
Пару страниц пролистнул, не нашёл, все 18 читать не буду. И здесь завязываем.Игорь Столяров писал(а): ↑04 Октябрь 2024, 21:56 Я этот вопрос задавал где-то вот здесь ...
viewtopic.php?t=4941&hilit=Ignore&start=165
С уважением, ДП