cJSON: Расхождение результатов ToGroup

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

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

cJSON: Расхождение результатов ToGroup

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

Добрый день !

Сразу хочу сказать, что этот вопрос возник не после сегодняшнего обновления (за которое огромное спасибо !).
Я давно это место обходил, но раз уже сегодня пошла переделка старого кода и костылей - решил сделать тест и показать ... ;)

Два эквивалентных способа загрузить простую группу и список в ней - дают разный результат:

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

  Data
Root       &cJson
Object     &cJson
Json       cJSONFactory
JStr       String('{{"menu":{{"T10":"lunch","T11":[{{"T12":"Пицца"},{{"T12":"Цезарь"}]}}')

gResponse  Group
T10          CString(21)
T11          &Q_List
           end           
Q_List     Queue,Type
T12         CString(21)
           end            
qList      Queue(Q_List).

  Code  
  ! --- 1 ВАРИАНТ (КЛАССИКА) ---
  Root &= Json.Parse(JStr)
  If Not Root &= Null     
     Object &= Root.FindObjectItem('menu')
     If Not Object &= Null           
        Object.ToGroup(gResponse,,'[{{"name":"T11","instance":' & Instance(qList,Thread()) & '}]')
        Message(gResponse.T10 & ' : ' & Records(qList))  ! lunch : 2 / OK ! :)
     end
     Root.Delete()
  end
  
  ! --- 2 ВАРИАНТ (УДОБНЫЙ) ---
  Clear(gResponse)
  Free(qList)
  
  Json.ToGroup(JStr,'menu',gResponse,'[{{"name":"T11","instance":' & Instance(qList,Thread()) & '}]')
  Message(gResponse.T10 & ' : ' & Records(qList))  ! lunch : 0 / BAD ! :(
Может быть я чего-то не понимаю ? Буду благодарен ! :)
Make Clarion Great Again ! 😎
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3284
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 48 раз
Контактная информация:

cJSON: Расхождение результатов ToGroup

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

Во втором случае я вижу, что параметр pMatchByFieldNumber пропущен, надо так:

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

Json.ToGroup(JStr,'menu',gResponse,,'[{{"name":"T11","instance":' & Instance(qList,Thread()) & '}]')
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8016
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 94 раза

cJSON: Расхождение результатов ToGroup

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

Спасибо ! Точно. Теперь всё работает. :)
Запутался, когда методы с одинаковыми именами имеют совсем разные наборы параметров.
Overloading - это ведь больше про разделение по типу передаваемых данных ...
Make Clarion Great Again ! 😎
Ответить