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

 
Andrey Dik:

вот об этом:

как вообще можно догадаться, не зная кода библиотеки, что это и почему это нужно сделать что бы получить желаемое?! должны быть функции вроде тех же ToDbl() для простого доступа к данным.

как вижу - не я один такой "недогадливый"

зы. например, m_e - что это за жесть вообще? нельзя было назвать, к примеру, group? или m_key? - ну это же ни что иное как groupName! ну что, намного больше букаф стало? - нет, зато гораздо понятнее.

Итог: библиотека очень мощная и творит чудеса, но написана на "сухом языке" и слабонервным, кормящим женщинам и детям в код лучше не смотреть...

дык а кто же вас заставлял лезть внутрь к массиву m_e ?

я не знаю что вам надо от кода. И не знаю какую вы разрабатываете задачу.

---

Во первых json это формат передачи данных, структуры.  Если вы не понимаете структуры принимаемых данных это не проблема моих классов, а ваша. Идите в документацию своего источника данных и ищите там понимание

Во вторых - класс реализует основные функции работы с форматом - сериализация, хранение структуры и удобное обращение

если бы вы хотели получить данные из определенного массива, то вы писали бы удобный для себя код

Print( js["фирма1"]["модельный_ряд1"][0][0].TODbl() );

а не ту пространную хрень в виде циклов по выдаче всей структуры. К чему это вообще было не знаю.

 
Delta.800:

может быть, Вам попробовать другую библиотеку?

я раньше ее использовал, но на MQL5 у меня (старая версия) не скомпилялась... нужно адаптировать... или попробовать новую версию...

http://www.lordy.co.nf/mql4/

тут на форуме где-то было про нее...

---------------------

вот, нашел...

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

Спасибо, но коду Сергеева я полностью доверяю.

С указателями я тупанул конечно, приношу извинения. Трудночитаемо - фии, какая проблема...

 

o_o:

Print( js["фирма1"]["модельный_ряд1"][0][0].TODbl() );

а не ту пространную хрень в виде циклов по выдаче всей структуры. К чему это вообще было не знаю.

по имени группы данных может и не быть, или группа не полная, или имени группы нет в данных, или ещё что... как тогда?

Вот так проще и наглядней и всегда можно проверить размер массивов что бы не возникло проблем с заполнением своих структур:

js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());

 

в таких вариантах неясно что делать с несуществующим элементом

что так

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

что эдак

js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());


если js["фирма1"] или js.group [счетчикФирм] не окажется, то что выдавать? и выдавать ли вообще что то ?

на данный момент произойдет обращение к null элементу и ошибка...

 
o_o:

в таких вариантах неясно что делать с несуществующим элементом

что так

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

что эдак

js.group [счетчикФирм].group [счетчикМодельногоРяда].group [счетчикМоделей].group [счетчикМодельВизОбъем].ToDbl ());


если js["фирма1"] или js.group [счетчикФирм] не окажется, то что выдавать? и выдавать ли вообще что то ?

на данный момент произойдет обращение к null элементу и ошибка...

Есть полки в магазине, для каждого жанра и автора своя стойка и полочки (структура/ы с которыми работает программа). И есть книги (данные), которые могут прийти в магазин а могут и не прийти....

И что, каждый раз переделывать полки под новый завоз книг что ли? нет конечно.

Что бы обратится таким способом:

js["фирма1"]["модельный_ряд1"][0][0].TODbl()

нужно знать Имя группы, а если группа в пришедших данных есть а имени не оказалось? а если .... да много чего может произойти...

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

 
Отличная разработка, спасибо, брат! Работает как часы, применил в своём роботе.
 
Konstantin Efremov:
Отличная разработка, спасибо, брат! Работает как часы, применил в своём роботе.

в библе есть косяки. в прикрепе поправленная версия, автору спасибо и наверное не будет против.

Файлы:
json.mqh  44 kb
 
Andrey Dik:

в библе есть косяки. в прикрепе поправленная версия, автору спасибо и наверное не будет против.

спасибо!

 

Подскажите, строка на сайте, откуда я пытаюсь получить информацию такого вида:
"{\"version\":\"0.1\",\"timestamp\":1588516629,\"bycompany\":{\"XTrade\"
Раньше знака "\" не было и все данные через эту библиотеку получал без труда, теперь ошибка. 
Пытался его убрать в редакторе, но ошибка

string a = "\";   '' - double quotes are needed

Т.е. своими силами я не могу убрать наклонную линию.

Подскажите, данный код не сможет справиться с этой


 
Roman Starostin:

Пытался его убрать в редакторе, но ошибка

string a = "\";   '' - double quotes are needed

Т.е. своими силами я не могу убрать наклонную линию.

Подскажите, данный код не сможет справиться с этой

так написано жеж "double quotes are needed"

нужно писать двойной бекслеш "\\", а не одинарный