cJSON

Программы на Clarion, шаблоны, библиотеки и пр.
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 21 Сентябрь 2018, 20:27

Перегнал cJSON (парсер json, написанный на ANSI C) на Clarion. Скачать можно здесь, есть примеры использования. Предложения и замечания приветствуются.
С уважением, ДП

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 23 Сентябрь 2018, 0:54

Обновил до gold-версии v1.00. Работает отлично.
С уважением, ДП

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 26 Сентябрь 2018, 21:14

Обновил до v1.02, теперь можно управлять отдельными полями при чтении/записи групп/очередей/файлов:
- '{{"name":"LastVisitDate", "format":"@d10-"}' - поле даты LastVisitDate будет записано в json в формате @d10-
- '{{"name":"Password", "ignore":true}' - поле Password в json записано не будет.
С уважением, ДП

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 27 Сентябрь 2018, 23:37

v1.03:
  • добавил опцию "jsonname" (замена имени поля группы на другое имя в json)
  • исправил ошибку в функции parse_number
  • тест на скорость разборки большого json файла
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

cJSON

Сообщение gopstop2007 » 26 Октябрь 2018, 18:57

продолжая тему viewtopic.php?p=35332#p35332
получилось перекодировать результат с сервера в два шага из json строки:
1. jsonFactory.Parseс unicode в utf-8 (cJSON)
2. из utf8 в ascii с помощью Cstr
не нашел, как сделать за один шаг?
есть ли возможность перекодировать из ascii -> unicode для JSON строки?
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 26 Октябрь 2018, 19:15

Пока ни того, ни другого нет, может сделаю.
С уважением, ДП

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 29 Октябрь 2018, 17:49

v1.09 на GitHub, новый пример novapochta для демонстрации смены кодировки.
Вкратце:
- если json содержит символы в utf-8 или последовательности вида \uXXXX, то:

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

parser                          cJSONFactory
    parser.codePage = CP_ACP    !- convert utf8 to ascii (active code page)
    jRoot &= parser.Parse(jsonString)
- если, наоборот, надо сохранить в json строки в utf-8, то:

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

curl.SendRequest(url, jParams.ToUtf8(FALSE, CP_ACP))
С уважением, ДП

gopstop2007
Ветеран
Сообщения: 1155
Зарегистрирован: 25 Март 2009, 21:55

cJSON

Сообщение gopstop2007 » 29 Октябрь 2018, 18:33

Дед Пахом писал(а):
29 Октябрь 2018, 17:49
v1.09 на GitHub, новый пример novapochta для демонстрации смены кодировки.
Супер, проверил, работает. Спасибо огромное. :)
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп

Аватара пользователя
Дед Пахом
Старичок
Сообщения: 2120
Зарегистрирован: 07 Июль 2005, 15:51
Откуда: Москва, Россия

cJSON

Сообщение Дед Пахом » 29 Октябрь 2018, 21:24

Если неохота возиться с json-объектами, можно сформировать строку напрямую, а в unicode перекодировать с помощью json::StringToULiterals:

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

postparams.Cat('{{"apiKey": "","modelName": "Address","calledMethod": "searchSettlements","methodProperties": {{"CityName": "'& json::StringToULiterals('київ') &'","Limit": 5}}')
С уважением, ДП

Ответить