Is there an easy way to parse JSON in mql4

 
I have tried few of the libraries in the codebase but I couldn't get them to work.

Thanks in advance,
 
What have you tried ?
 
For example which one not working with you - round questions and or mind reading is a hard job
 
Marco vd Heijden:
What have you tried ?

https://www.mql5.com/en/code/11134

This one doesn't compile, even after having Hash.mqh .

JSON Parser
JSON Parser
  • www.mql5.com
SwingCyborg This Expert Advisor is based on your human ability to predict medium and long term trends. MACD vs Signal line It opens and close transactions depends on MACD vs signal line - upper - opens buy, closes sell, below - closes buy, opens sell. Universal EA This is my first Expert Advisor so please give feedback on how I can improve...
 

Recently I have posted a question on Russian forum (the topic is unimportant here), which is accompanied with an attachment with json1.mqh header (also uses hash1.mqh which included as well), extended and tested by me.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

BUG?: сломан импорт из библиотеки использующей шаблонизированные классы

Stanislav Korotky, 2018.09.21 12:53

Прошу совета у сообщества программистов-профессионалов. Было бы желательно, чтобы ситуацию прокомментировали разработчики MQ.

Имеется проект, использующий шаблонизированные классы json. Все работает как надо. Однако стоит задача оформить проект в виде библиотеки. Соответственно его рабочий интерфейс экспортируется из библиотеки и импортируется в клиентский код. Заголовочный файл с классами json (плюс заголовочный класс хэша из зависимостей) используется в открытом неизменном виде и там, и там.

Здесь возникает проблема в том, чтобы сигнатуры классов, генерируемых шаблонами в библиотеке и в клиентском коде совпадали. Для этого были написаны специальные методы инициализации. Также с помощью дополнительных средств были собраны списки всех реально генерируемых специализаций в коде, и сейчас гарантировано, что все необходимые специализации классов и методов должны совпадать в библиотеке и в клиентском коде. Однако происходит нечто странное.

в зависимости от структуры скрытого кода в имплементации библиотеки (не json) импорт портится - возникает ошибка

Cannot find 'createWorkInterface' in 'jsonlib.ex5'
unresolved import function call

Как обычно, портится он при желательном - оптимальном и удобном - использовании шаблонов json. А чинится при переписывании проблемных фрагментов тривиальными, неудобными способами, причем даже не понятно, почему способы не эквивалентны с точки зрения компилятора.

Прикладываю в архиве заголовочные файлы, код библиотеки и использующий её демонстрационный скрипт. Проблемные строчки помечены в библиотеке комментариями. Сейчас там импорт сломан. Чтобы его починить, нужно раскомментарить последний вариант реализации (все остальные закомментировать).

PS. Решение нашел, добавив ломающий импорт код в инициализацию (object["akeystring"]["akeystring"]), но все равно интересно, почему так.


 

This is by far the best JSON library in the codebase and the closest I've found to the python json module. Usage is very simple. 


#include <JAson.mqh>
void OnStart()
{
   MqlRates rates[];
   CopyRates(_Symbol, _Period, 0, 10, rates);
   CJAVal json;
   for(int i=0; i<ArraySize(rates); i++){
      json[i]["open"] = rates[i].open;
      json[i]["close"] = rates[i].close;
      json[i]["time"] = TimeToString(rates[i].time);
   }
   string result;
   json.Serialize(result);
   Print(result); //[{"open":1.17619000,"close":1.17593000,"time":"2018.09.21 14:00"},{...}]
   
   CJAVal json2;
   json2.Deserialize(result);
   for(int i=0; i<json2.Size(); i++)
      printf("%s: %f, %f",
         json2[i]["time"].ToStr(),
         json2[i]["open"].ToDbl(),
         json2[i]["close"].ToDbl()
      );
}
 

Great it worked!, thanks @nicholi shen helpful as always.
and thanks all for the replies, appreciate your time.