Bibliotheken: JSON Serialization and Deserialization (native MQL) - Seite 9

 
o_o:

1.12

Schritt 100 in ArrayResize setzen

Muss ich die Quellen in der Codebase aktualisieren?

 
Delta.800:

Liebe Fachleute! Bitte helfen Sie mir, die Bibliothek zu verstehen. (Ich bin nicht gut in der objektorientierten Programmierung noch, so kann ich nicht verstehen, den Code der Bibliothek selbst und der Artikel gewidmet, die BTC-E Austausch. das ist, warum ich für ein einfaches Beispiel wie in der Post fragen).

Ich brauche, um zwei öffentliche api von WEX.NZ Austausch zu parsen.

https://wex.nz/api/3/info

Von hier aus muss ich alle verfügbaren Paare (btc_usd, btc_rur, ...) in einem Array erhalten (nur Paar-Namen, ohne Parameter, ich kann Parameter durch bekannte Namen erhalten...).


https://wex.nz/api/3/depth/btc_usd


und von hier aus den Preis und den Wert von Aufträgen in zwei Arrays (Anfragen und Gebote) erhalten.

Ich wäre Ihnen sehr dankbar für Ihre Hilfe!!! Vielen Dank im Voraus!


Zeigen Sie Ihren Code an der Stelle, an der Sie aufgehört haben, was genau ist fehlerhaft?
 
Rashid Umarov:

Muss ich die Quellen in Codebase aktualisieren?

sind dort schon seit langem vorhanden
 

Gute Arbeit, Hut ab!

Allerdings... Wenn Sie fehlerhafte Daten für die Deserialisierung erhalten (die Anzahl der öffnenden Anführungszeichen oder Klammern ist nicht gleich der Anzahl der schließenden Anführungszeichen oder Klammern), stürzt das Programm mit einer Meldung über Array-Überlauf ab. Und das ist sehr schlecht, solche Momente müssen bei der Arbeit mit Arrays beachtet werden, zumindest wenn es keine Überprüfung der Korrektheit der Eingabedaten gibt.

 
Andrey Dik:

Gute Arbeit, Hut ab!

Allerdings... Wenn Sie fehlerhafte Daten für die Deserialisierung erhalten (die Anzahl der öffnenden Anführungszeichen oder Klammern ist nicht gleich der Anzahl der schließenden Anführungszeichen oder Klammern), stürzt das Programm mit einer Meldung über Array-Überlauf ab. Und das ist sehr schlecht, solche Momente müssen bei der Arbeit mit Arrays beachtet werden, zumindest wenn es keine Überprüfung der Korrektheit der Eingabedaten gibt.

Bitte demonstrieren Sie die spezifischen Daten
 
o_o:


zeige deinen Code, wo du aufgehört hast, woran genau du scheiterst

Im Allgemeinen kann ich nicht einmal herausfinden, wie ich die Namen aller Paare aus dem ersten Link bekomme :-(

---

Ich erhalte Zugang zu den Parametern eines Paares aus dem ersten Link auf folgende Weise:

CJAVal dataM;
dataM.Deserialize(ttt);  
... 
Print(dataM["pairs"]["btc_usd"]["fee"].ToDbl());

wobei ttt die aus der Webanforderung erhaltene Zeichenfolge ist.

Aus dem zweiten Link, löste ich das Problem, bekomme ich Zugang wie folgt:

Print(dataM["btc_usd"]["asks"].m_e[1][0].ToDbl());
wo
m_e[X][Y]

X- Auftragsnummer (beginnend bei Null)

Y- 0- ist der Preis, 1- ist der Wert .

 
Delta.800:

Wie auch immer, ich kann nicht einmal herausfinden, wie ich die Namen aller Paare aus dem ersten Link bekomme :-(

---

Ich erhalte Zugang zu den Parametern eines Paares aus dem ersten Link auf folgende Weise:

wobei ttt die aus der Webanforderung erhaltene Zeichenfolge ist.

Über den zweiten Link habe ich das Problem gelöst, ich erhalte Zugang wie folgt:

wo

X- Auftragsnummer (beginnend bei Null)

Y- 0- ist der Preis, 1- ist der Wert .

und ok.

Wenn Ihr Problem damit gelöst ist, verwenden Sie diese Lösung.

Wenn sie nicht ausreicht, werden Sie sich etwas Besseres einfallen lassen.

 
o_o:

Ja.

Wenn es Ihr Problem jetzt löst, verwenden Sie es.

Wenn es nicht ausreicht, fällt dir etwas Besseres ein.

Nein, nein, nein. Du hast etwas missverstanden...

Ich habe alles gelöst, bis auf eines! Ich brauche alle Namen der Paare! Ich weiß, wie man die bekannten bekommt, aber wie bekommt man die unbekannten?

 
Ja, ich habe wahrscheinlich nicht verstanden, was dein Problem war, denn nach den Zeilen, die du gezeigt hast, konntest du alles bekommen.
 
o_o:
Spezifische Daten demonstrieren

  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917}";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);
  
  //---
  in = "{\"asdasdasd\":{\"sdfs\":0.02189746,\"dfgdf\":0.01925917";
  out = "";
  b = js.Deserialize (in);
  js.Serialize (out);
  Print (out);


2018.02.21 14:03:39.861 jason_test(EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.861 jason_test (EURUSD,W1) {"asdasdasdasd":{"sdfs":0.02189746, "dfgdf":0.01925917}}
2018.02.21 14:03:39.862 jason_test (EURUSD,W1) array out of range in 'json.mqh' (597,19)