Библиотеки: JSON Serialization and Deserialization (native MQL)

 

JSON Serialization and Deserialization (native MQL):

Сериализация и десериализация JSON протокола. Портированный код со скоростной библиотеки С++.

Автор: o_O

 

Библиотека работает в MQL4 и MQL5

Благодарность принимается в виде примеров вашей практической работы с веб-ресурсами из MQL.  ;)

 

Работает в MT4. В MT5 выдет ошибку Stack overflow. При этом нет информации о месте падения. И дебагер просто вылетает.

Ошибка появляется в элементарном примере:

#include <jason.mqh>

void OnStart()
{
   CJAVal json;
   json["item1"] = "value1";
   json["item2"] = "value2";
}

 Как оказалось, скрипт падает на строчке 90, увеличивая размер 'm_e' c 1 до 2х:

ArrayResize(m_e,c+1);

 
P.S. MT5 build 1210

 
a.p:

Работает в MT4. В MT5 выдет ошибку Stack overflow. При этом нет информации о месте падения. И дебагер просто вылетает.

Ошибка появляется в элементарном примере:

 Как оказалось, скрипт падает на строчке 90, увеличивая размер 'm_e' c 1 до 2х:

 
P.S. MT5 build 1210

Спасибо за сообщение, ошибка исправлена. Исправление войдёт в следующий билд терминала.
 

спс за либу, но возникли некоторые проблемы.

Я не могу понять как мне засунуть массив с помощью библиотеки?

например, есть

string a[] = {"1", "2", "3"};
int b[] = {1, 2, 3};
double c[] = {1.1, 2.9, 3.03};

проблемы возникают на уровне объявления переменной типа CJAVal. Использование CJAVal primer(jtARRAY, a); не помогает.

Пример с массивом, который вы показали в примере для меня не подходит - а что если у меня 10 значений в массиве? мне надо создавать новых 10 переменных типа CJAVal ???

Вы могли бы дополнить или расширить файл примеров ???

п.с. с форматом json работаю первый раз. Изучал ваш файл-программу с примерами.

 

Фигасе, вот это труд! А ради чего? Ради извлечения пары переменных из небольшой строчки. 

А что код так отформатирован? Что бы никто даже и посмотреть в него не пытался? А ведь это кодабаза все-таки. 

 
Dmitry Fedoseev:

Фигасе, вот это труд! А ради чего? Ради извлечения пары переменных из небольшой строчки. 

А что код так отформатирован? Что бы никто даже и посмотреть в него не пытался? А ведь это кодабаза все-таки. 

Мне интересна идея быстро записать в файл любые данные и быстро извлечь. Жалко, что либа не форматирует удобочитаемость для человеческого глаза :( Склоняюсь к тому, что скорее всего буду писать самостоятельно под свои задачи таку прогу.

Код максимально упростили - минимизация!

 
Виктор Василюк:

Мне интересна идея быстро записать в файл любые данные и быстро извлечь. Жалко, что либа не форматирует удобочитаемость для человеческого глаза :( Склоняюсь к тому, что скорее всего буду писать самостоятельно под свои задачи таку прогу.

Код максимально упростили - минимизация!

Для такой задачи не пойдет, это не то, что сериализация в PHP или C#.

Здесь имеется одна ложка дёгтя:

   virtual CJAVal *FindKey(string akey) { 
      for(int i=0; i<ArraySize(m_e); i++) 
      if(m_e[i].m_key==akey) 
      return GetPointer(m_e[i]); 
      return NULL; 
   }
Ключ ищется простым перебором. С данными большого размера не получится быстро работать.
 
Dmitry Fedoseev:

Для такой задачи не пойдет, это не то, что сериализация в PHP или C#.

Здесь имеется одна ложка дёгтя:

Ключ ищется простым перебором. С данными большого размера не получится быстро работать.
спс. Нашел другую либу. Вроде норм ищет.
 
Виктор Василюк:
спс. Нашел другую либу. Вроде норм ищет.
Там, если не ошибаюсь, ограничено количество элементов хэша. 
 
Dmitry Fedoseev:
Там, если не ошибаюсь, ограничено количество элементов хэша. 
и как теперь быть? есть варианты по другому порешать это?
Причина обращения: