Библиотеки: JSON Serialization and Deserialization (native MQL) - страница 5

 

v 1.09

- добавлена возможность сериализовать дабл числа с указанной точностью (по умолчанию было 8 знаков).
Для этого добавлен параметр точности m_prec, который можно задавать как вручную так и при вызове конструктора или функции Add

- исправлен баг в МТ4 из-за отличного от МТ5 поведения функции ArrayCopy (константа WHOLE_ARRAY различная)

Файлы:
JAson.mqh  31 kb
 
o_o:

v 1.09

- добавлена возможность сериализовать дабл числа с указанной точностью (по умолчанию было 8 знаков).
Для этого добавлен параметр точности m_prec, который можно задавать как вручную так и при вызове конструктора или функции Add

- исправлен баг в МТ4 из-за отличного от МТ5 поведения функции ArrayCopy (константа WHOLE_ARRAY различная)

Обновил на всех языках
 

обращение из моего кода к ArraySize( js["значение json"] );

выдает ошибку компиляции

'operator[]' - variable expected


использую mql 4


для решения проблемы добавил в JAson.mqh:

int size() { return ArraySize(m_e); } 

для определения размера массива


вопрос: как то предусмотрено определение размера массива?

может я не нашел.


видимо нужно делать так

ArraySize( js["значение json"].m_e )


внутренняя функция size() удобней как по мне

 

1.10

Добавлена функция int Size() для возврата количества элементов

пример

n=js["object_name"].Size(); // количество элементов в объекте
n=js["array_name"].Size(); // количество элементов в массиве

// альтернатива
n=ArraySize(js["object_name"].m_e);
n=ArraySize(js["array_name"].m_e);

Файлы:
JAson.mqh  31 kb
 
o_o:

1.10

Добавлена функция int Size() для возврата количества элементов

пример

n=js["object_name"].Size(); // количество элементов в объекте
n=js["array_name"].Size(); // количество элементов в массиве

// альтернатива
n=ArraySize(js["object_name"].m_e);
n=ArraySize(js["array_name"].m_e);


Отлично! хорошая работа спасибо за код!

 

v 1.11

- исправлено дефолтное значение параметра m_prec (на =8) с учетом поведения функции DoubleToString

Если значение m_prec лежит в диапазоне от 0 до 16, то будет получено строковое представление числа с указанным количество знаков после запятой.
Если значение
m_prec лежит в диапазоне от -1 до -16, то будет получено строковое представление числа в научном формате с указанным количеством знаков после запятой.
Во всех остальных случаях строковое представление числа будет содержать 8 знаков после запятой.

Файлы:
JAson.mqh  31 kb
 

Спасибо!
Замечательная библиотека.

 
o_o:

v1.08

Исправлен парсинг массива массивов (например { "a":[[1],[2]] } )


Алексей, а как "собрать" массив массивов? Пишу сейчас библиотеку для телеграм, пользовательская клавиатура представляет собой json объект массива массивов json объектов

 
JAval j1; j1.Add(1);

JAval j2; j2.Add(2); j2.Add(3);

JAval js;

js["a"].Add(j1);
js["a"].Add(j2);


// на выхлопе - { a: [ [1], [2,3] ]; }
 
o_o:

Так вроде понятно, но кое-что понять не могу... К примеру простая практическая задача: передираем графики и составляем массив массивов по 3 графика в каждом, с полями "symbol" и "period"

То есть в итоге должны получить следующее: { "keyboard": [ [{"symbol":USDJPY,"period":5},{"symbol":AUDUSD,"period":5},{"symbol":EURUSD,"period":5}], [{"symbol":GBPUSD,"period":5},{"symbol":NZDUSD,"period":5},{"symbol":EURJPY,"period":5}] ] }

При этом количество элементов во вложенном массиве может настраиваться через переменную.

Причина обращения: