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

 
o_o:

в смысле?  сами же такие глубины массивов сделали.

я сделал? - нет, моя фантазия так далеко не залетает, но это конкретный пример из жизни, так сказать.

имел ввиду - нельзя обойтись без указателей и мозголомных конструкций? как то проще хочется (про сам код библиотеки скромно умолчу вообще).

 
Andrey Dik:

я сделал? - нет, моя фантазия так далеко не залетает, но это конкретный пример из жизни, так сказать.

имел ввиду - нельзя обойтись без указателей и мозголомных конструкций?

где обойтись? что конкретно надо? выводить в лог кусок json? кнопку "хочу бабла" ? 

 
o_o:

где обойтись? что конкретно надо? выводить в лог кусок json? кнопку "хочу бабла" ? 

вот об этом:

CJAVal* j1=GetPointer(js.m_e[i].m_e[i1]);

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

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

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

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

 
Andrey Dik:

вот об этом:

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

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

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

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

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

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

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

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

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

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

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

 
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()

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

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

 

Может ли кто-нибудь или автор ответить, предполагается ли поддержка вложенного JSON? То есть экземпляр CJAVal содержит ключи '2', и '3', которые являются еще одним экземпляром CJAVal. Код вроде бы выполняется, но при сериализации ключи оказываются пустыми.

Например, я получаю:

{"":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}

Но должно быть получено

{"2":{"sl":5270.98000000,"tp":5285.26000000,"order":2},"3":{"sl":5274.80000000,"tp":5289.06000000,"order":3}}