cJSON: Установка имён тегов

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

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

cJSON: Установка имён тегов

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

Добрый день !

Есть товарищи (которые нам не товарищи !) делающие в REST запросах регистрозависимость тегов JSON. :(
Приходится соответствовать и здесь в cJSON есть подозрение на проблему. Проверьте пожалуйста концептуальный пример:

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

gRequest Group
type       CString('setDateTime')
dateTime   CString('12345')  ! Не важно - какое-то значение тега
         end
Object   &cJson
  Code
  ! Вариант 1 - OK ! (см. рисунок 1)
  Object &= json::CreateObject(gRequest,,'[{{"Name":"dateTime","JsonName":"dateTime2"}]')

  ! Вариант 2 - OK ! (см. рисунок 1)  
  Object &= json::CreateObject(gRequest,,'[{{"Name":"*","EmptyString":"Ignore"},' & |
                                          '{{"Name":"dateTime","JsonName":"dateTime2"}]')
  
  ! Вариант 3 - BAD ! (см. рисунок 2)  
  Object &= json::CreateObject(gRequest,,'[{{"Name":"*","IgnoreEmptyObject":True},' & |
                                          '{{"Name":"dateTime","JsonName":"dateTime2"}]')
                                          
  ! Вариант 4 - BAD ! (см. рисунок 2)                                            
  Object &= json::CreateObject(gRequest,,'[{{"Name":"*","IgnoreZero":True},' & |
                                          '{{"Name":"dateTime","JsonName":"dateTime2"}]')                                          
                                                                                    
  Message(Object.ToString(True))                                          
1.jpg
2.jpg
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3184
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 12 раз
Поблагодарили: 36 раз
Контактная информация:

cJSON: Установка имён тегов

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

В json нет значений True/False, но есть true/false. Парсер видит синтаксическую ошибку (и сообщает о ней в DebugView) и игнорирует переданную опцию.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7581
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 20 раз
Поблагодарили: 64 раза

cJSON: Установка имён тегов

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

Спасибо ! Сейчас вспоминаю, что это место давным-давно обсуждалось ... :(
Хорошо бы добавить явно строчку об этом в RuleOptions.md для таких как я. Спасибо !

Потому что там первой идёт строка "All rule names are case insensitive" и ты
уже как-то не ожидаешь нож в спину только для значений true/false ...
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3184
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 12 раз
Поблагодарили: 36 раз
Контактная информация:

cJSON: Установка имён тегов

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

Rule names это names, а true/false это values.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7581
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 20 раз
Поблагодарили: 64 раза

cJSON: Установка имён тегов

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

Это понятно и не является casus belli ! :)

Но согласитесь, что есть некая неожиданность, что вот это "rule of lowercase" действует
только на true/false и ни на какие value больше ... ;)

На мой взгляд, этот технологический казус заслуживает отдельного упоминания.
Обо мне не беспокойтесь - я уже везде у себя в исходниках это большими буквами написал ... ;)
Make Clarion Great Again ! 😎
Ответить