cJSON: Формат полей для вложенных структур
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
cJSON: Формат полей для вложенных структур
Вот такой вариант, удовлетворяет моим хотелкам. Тестировал, правда, на совсем примитивных вводных.
- Вложения
-
- cjson.clw
- (79.51 КБ) 25 скачиваний
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Спасибо. Достаточно сложный вариант сложения правил, чего ранее в классе ведь не было ...
Для моих простых хотелок, вроде "все выключили и потом включили два" конечно подходит.
Но смущает вот такая комбинация. Должно ли выгружаться Field02 ?
Ведь для него (как и всех других полей) должно действовать общее правило: Ignore = true ...
Для моих простых хотелок, вроде "все выключили и потом включили два" конечно подходит.
Но смущает вот такая комбинация. Должно ли выгружаться Field02 ?
Ведь для него (как и всех других полей) должно действовать общее правило: Ignore = true ...
Код: Выделить всё
jParams &= json::CreateObject(MyDoc,,'{{"name":"Name","ignore":False},{{"name":"*","ignore":true},{{"name":"Field02","IsQueue":True}')
! Выгружает только поля: Name и Field02
За теми кто отстал - не возвращаться. (С) Кодекс
- Admin
- Администратор
- Сообщения: 3959
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 25 раз
- Поблагодарили: 22 раза
- Контактная информация:
cJSON: Формат полей для вложенных структур
Мужики. Зачем огород городить.
Нужно управление каждым полем. А если юзеру нужно он сверху может накрутить что угодно. Наследование или еще как.
Налепите, потом не разберешься
Нужно управление каждым полем. А если юзеру нужно он сверху может накрутить что угодно. Наследование или еще как.
Налепите, потом не разберешься
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Я согласный упроститься ещё со вчера ...
Как по мне - то комбинация с явными параметрами самая понятная и простая. Но я здесь лузером ...
Либо общее правило, либо задаём ВСЁ индивидуально. Котлеты отдельно, мухи отдельно.
Все поля булевы, а для Expired ещё меняем имя:
Как по мне - то комбинация с явными параметрами самая понятная и простая. Но я здесь лузером ...
Либо общее правило, либо задаём ВСЁ индивидуально. Котлеты отдельно, мухи отдельно.
Все поля булевы, а для Expired ещё меняем имя:
Код: Выделить всё
[{"name"="Expired","jsonname":"IsExpired","isbool":true},{"name"="*","isbool":true}]
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
cJSON: Формат полей для вложенных структур
Ладно, будем считать, что общее правило должно применяться только для полей, для которых нет явного правила.
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Я за. В принципе можно считать этот вариант базовой комплектацией.
А дальше (при желании) уже можно сделать опциональные правила сложения правил ...
А дальше (при желании) уже можно сделать опциональные правила сложения правил ...
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
На примерах всё работает, в боевых задачах буду следить.
Главное, что это решение не ломает существующие схемы выгрузки.
А мне теперь надо катастрофически упростить огромные правила выгрузки.
Главное, что это решение не ломает существующие схемы выгрузки.
А мне теперь надо катастрофически упростить огромные правила выгрузки.
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Добрый день !
Да, это снова я за воспоможением по той же теме ...
Берём прекрасный штатный пример: QueueInGroupTest и помещаем списк телефонов во вложенный блок JSON:
Список телефонов перестал загружаться сразу.
А ведь по сути ничего не поменялось для настроек загрузки через INSTANCE(PhonesQ, THREAD()) ... но не работает.
Метод просто не просматривает вложенные блоки ?
Как загрузить такой массив через FindObjectItem('phones') + ToQueue(PhonesQ) - я знаю.
Но непонятно почему "выключается" загрузка через буфер ? Я чего-то опять не понимаю ?
Заранее спасибо.
Да, это снова я за воспоможением по той же теме ...
Берём прекрасный штатный пример: QueueInGroupTest и помещаем списк телефонов во вложенный блок JSON:
Код: Выделить всё
!Было:
!testString STRING('{{"name": "Carl", "addresses": [{{"city": "Rivercity","street": "Main st","house": 123},{{"city": "Rivertown","street": "Park st","house": 987}], "phones": ["1234567", "7654321"]}')
!Стало
testString STRING('{{"name": "Carl", "addresses": [{{"city": "Rivercity","street": "Main st","house": 123},{{"city": "Rivertown","street": "Park st","house": 987}], "phonelist":{{"phones": ["1234567", "7654321"]}}')
!Для наглядности:
{
"name": "Carl",
"addresses": [
{
"city": "Rivercity",
"street": "Main st",
"house": 123
},
{
"city": "Rivertown",
"street": "Park st",
"house": 987
}
],
"phonelist": {
"phones": [
"1234567",
"7654321"
]
}
}
А ведь по сути ничего не поменялось для настроек загрузки через INSTANCE(PhonesQ, THREAD()) ... но не работает.
Метод просто не просматривает вложенные блоки ?
Как загрузить такой массив через FindObjectItem('phones') + ToQueue(PhonesQ) - я знаю.
Но непонятно почему "выключается" загрузка через буфер ? Я чего-то опять не понимаю ?
Заранее спасибо.
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
cJSON: Формат полей для вложенных структур
Потому что несовпадение по структуре, вот почему
Если Phones поместить в группу PhoneList, то всё начинает работать:
Если Phones поместить в группу PhoneList, то всё начинает работать:
Код: Выделить всё
PersonGrp GROUP
Name STRING(20)
Addresses &QUEUE !- reference to AddressQ
Phonelist GROUP
Phones &QUEUE !- reference to PhonesQ
END
END
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Спасибо, я понял идею. Всё действительно работает.
Получается, массив может быть в любом месте строки JSON, а вот уникальный указатель на очередь - нужно выставлять чётко по структуре.
Это нужно знать.
Получается, массив может быть в любом месте строки JSON, а вот уникальный указатель на очередь - нужно выставлять чётко по структуре.
Это нужно знать.
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
cJSON: Формат полей для вложенных структур
Когда парсинг доходит до элемента "phonelist" и не находит соответствующего поля в группе, то просто переходит к следующему элементу.
С уважением, ДП
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Привет всем !
У меня снова непонятки. Прошу рассмотреть пример:
Результат:
Заранее спасибо за содействие !
У меня снова непонятки. Прошу рассмотреть пример:
Код: Выделить всё
MyTest Procedure()
Q_Docs Queue,Type
SignedContent Group
Content String(20)
Signature String(20)
TestFlag Bool
end
end
gMessage Group
Docs &Q_Docs
DocsInstance Long
end
qFile Queue(Q_Docs).
Params &cJson
Code
qFile.SignedContent.Content = 'Текст'; Add(qFile)
gMessage.Docs &= qFile
gMessage.DocsInstance = Instance(gMessage.Docs,Thread())
Params &= json::CreateObject(gMessage,,'[{{"name":"*", "ignore":true},' & |
'{{"name":"Docs", "isQueue":true},' & |
'{{"name":"DocsInstance", "ignore":false},' & | ! Это мона убрать
'{{"name":"SignedContent","ignore":false},' & |
'{{"name":"Content", "ignore":false},' & |
'{{"name":"TestFlag", "isBool":true}]')
Message(Params.ToString(True))
Код: Выделить всё
{
"docs": [
{
"signedcontent": {
"content": "Текст",
"testflag": false
},
"testflag": false ! <--- ??? Откуда взялся этот дубликат ???
}
]
}
За теми кто отстал - не возвращаться. (С) Кодекс
- Игорь Столяров
- Ветеран движения
- Сообщения: 7373
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 48 раз
cJSON: Формат полей для вложенных структур
Можно проще, но c тем же конфузом.
Что-то пошло не так с полем "Signature" ...
Что-то пошло не так с полем "Signature" ...
Код: Выделить всё
Params &= json::CreateObject(gMessage,,'[{{"name":"Docs","isQueue":true},{{"name":"Signature","ignore":true}]')
За теми кто отстал - не возвращаться. (С) Кодекс
- Дед Пахом
- Старичок
- Сообщения: 3133
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 10 раз
- Поблагодарили: 28 раз
- Контактная информация:
cJSON: Формат полей для вложенных структур
Мой косяк, прикрепил фикс, проверьте.
- Вложения
-
- cjson.clw
- (76.46 КБ) 18 скачиваний
С уважением, ДП