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

 
Ruslan Piraliyev #:

Доброго времени суток!

Крутая библиотека очень помогает, огромное спасибо.

Только вот столкнулся с такой проблемой - как вытащить подстроку из строки:

Есть строка 

{"type":"settings","data":{"auto_trade":true,"stop_trade":true}}

нужно вытащить подстроку data.

Так не получается:

CJAVal js;

js.Deserialize(stroka);

js["data"].ToStr();

Нашел пока только один способ вытащить нужную подстроку:

js.Deserialize(stroka);

string data2=js["data"].Serialize();

js2.Deserialize(data2);

Т.е. нужную подстроку нужно отдельно сериализовать и десериализовать.

 
Sergey Likho #:

Подскажите, как добавить округление в double

Есть вариант ниже, но он добавляет квадратные скобки. 

Как получить?

Попробуйте так:

      CJAVal js(NULL,jtUNDEF);
      double d = 0.05;
      js["OrderLot"] = d;
 

После очередного обновления перестала работать. В логе - номера строк с ошибками

Билд 3756.

 

Есть вот такая структура

[

   {

      "ticket":671073362

   },

   {

      "ticket":111111111

   }

]


Хочу получить 2 элемента. И первый тикет, и второй.

string js = "{\"ticket\":671073362\"},{\"ticket\":111111111}";

jv.Deserialize(js);

Print( jv["ticket"].ToStr());

Так получаю доступ только к первому. Как получить доступ ко второму и последующим, если будут?

Эта проблема обсуждалась здесь  https://www.mql5.com/ru/forum/63015/page3#comment_2844920 , но там автор подобную структуру обернул в именованный массив, наподобие

string js = "{\"array\":[{\"ticket\":671073362},{\"ticket\":111111111}]}";

jv.Deserialize(js);

for(int i = 0; i < ArraySize(jv["array"].m_e); i++)
   {
      Print(jv["array"].m_e[i]["ticket"].ToInt());
   }

так все находится. но что делать, если я не могу изменить структуру json? Как получить этот массив и пройтись по элементам?

 
Nikita Chernyshov #:

Есть вот такая структура

[

   {

      "ticket":671073362

   },

   {

      "ticket":111111111

   }

]

...

Указанная строка не соответствует приведенной в начале структуре и не является корректным json-ом:

string js = "{\"ticket\":671073362\"},{\"ticket\":111111111}";

Должна быть:

string js = "[{\"ticket\":671073362},{\"ticket\":111111111}]";

Это замечание - только по спецификации json-а, безотносительно к тому, как он реализован в конкретной библиотеке. Я использую другую.

 
Stanislav Korotky #:

Указанная строка не соответствует приведенной в начале структуре и не является корректным json-ом:

Должна быть:

Это замечание - только по спецификации json-а, безотносительно к тому, как он реализован в конкретной библиотеке. Я использую другую.

ну это да, там не хватает квадратов, но с ними не помогает)

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