Страница 1 из 1

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

Добавлено: 04 Сентябрь 2024, 6:41
Игорь Столяров
Добрый день !

Есть товарищи (которые нам не товарищи !) делающие в 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

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

Добавлено: 04 Сентябрь 2024, 13:09
Дед Пахом
В json нет значений True/False, но есть true/false. Парсер видит синтаксическую ошибку (и сообщает о ней в DebugView) и игнорирует переданную опцию.

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

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

Потому что там первой идёт строка "All rule names are case insensitive" и ты
уже как-то не ожидаешь нож в спину только для значений true/false ...

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

Добавлено: 04 Сентябрь 2024, 15:00
Дед Пахом
Rule names это names, а true/false это values.

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

Добавлено: 04 Сентябрь 2024, 15:11
Игорь Столяров
Это понятно и не является casus belli ! :)

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

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