Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Diese Bibliothek verursacht ERROR und ich habe es bestätigt
mein Code
Irgendeine Idee, wie man das Problem beheben kann?
Es verursacht nur, wenn ich eine beliebige Zeichenfolge desearilize
Wenn der String-Wert ein ';'-Zeichen enthält, schlägt Deserialize fehl!
Alles funktioniert. Ich habe das Problem auf meiner Seite gefunden.
Als Sie . Ich sende POST WebRequests (http) von MT5 (MQL5) zu Chat GPT-4-o-mini API (openai.com) . OpenAI empfängt JSON Daten . MQL unterstützt JSON nicht. Also musste ich den String in einen String umwandeln, dann den String in ein Char[] Array konvertieren, um ihn als postData in den WebRequest einzufügen. Ich verwende Ihre Bibliothek, ich werde Sie wissen lassen, wie ich weiterkomme.
Das ist fantastisch
Ich habe das gleiche gedacht, um meine ML mit der Antwort von ChatGPT zu füttern.
Macht es Ihnen etwas aus, wie Sie es gemacht haben? Was sind die Herausforderungen?
Danke!
Hallo, gibt es eine Möglichkeit,:
- den Wert eines Schlüssels auf null zu setzen
- Den Wert eines Schlüssels auf {} (leeres Objekt) zu setzen
Es scheint, dass diese Werte nicht korrekt dargestellt werden, wenn Sie versuchen, sie zu setzen.
Danke für jede Antwort
Was mache ich falsch?
Ein echtes Beispiel aus der Praxis. Eine Zeichenkette mit 21+ tausend Zeichen Länge. Mehrere Variablen und 2 große Arrays b und a. Es gibt 500 Subarrays mit jeweils 2 Elementen:
Ich habe eine Diskrepanz zwischen den Originaldaten und den Daten, die JASON ausgibt, gefunden:
Die ersten 2 Zeilen geben das Ende der ursprünglichen Zeichenkette aus, die von JASON geparst wird.
Beim Parsen werden alle Elemente in das Array geschrieben. Es erhält n=2000 Elemente. Das ist korrekt.
Dann sind 2 Zeilen die ersten 20 Elemente des Arrays und 2 weitere Zeilen die letzten 20 Elemente.
Am Anfang des Arrays stimmt alles überein.
Aber am Ende stimmt die erste Ziffer der Paare überein, aber die zweite nicht. Offenbar wurde sie von irgendwo anders übernommen.
Ich habe es überprüft. Das zweite Array a enthält Daten aus dem ersten Array b. Hier ist das Ende der ursprünglichen Daten aus Array a:
D.h. das zweite Array enthält in Subarrays in den ersten Elementen seinen /rechten Wert, in den zweiten Elementen - Werte aus dem ersten Array.
Das Problem liegt wahrscheinlich im Parser-Code.
Datenersetzung ist sehr anstrengend - wie kann man sie später testen? Nur falsch! Gut, dass Sie es bemerkt haben. Bei einfacheren Varianten ohne verschachtelte Arrays funktioniert es hoffentlich richtig. Aber man sollte alles testen, bevor man es in Betrieb nimmt.
Der Code basiert auf den Beispielen aus dem Zweig, nur mit meinem Datenstring:
Der vollständige Code des Skripts mit diesem String ist angehängt.
Bibliothek der neuesten Version "1.13" - heruntergeladen von GitHub.
Oben wird auch über Probleme mit dem zweiten Element geschrieben. Wahrscheinlich das gleiche Problem.
Ich habe mir ein Daten-Parsing für eine bestimmte Vorlage, durch die Aufteilung durch Anführungszeichen " mit der anschließenden Auswahl der Elemente nach Nummer.
Minus - für jede Vorlage haben, um Zeit zu verbringen und schreiben ihre eigenen Parser und zählen die Anzahl der Elemente ...
Plus - 3 mal schneller universell und bequem JASON. Anstelle von 40 Sekunden 13 auf die ursprünglichen Daten ~400 Mb.
Verbrachte einen halben Tag auf sie.
Genauer gesagt auf 3 Versionen:
1) zuerst suchte ich nach bestimmten Teilstrings in char Array und dann zusammengesetzt Strings aus ihren Werten - ich nahm an, dass dies die schnellste Code
Ich wollte direkt mit char Array zu arbeiten, weil ich das Original von WebRequest oder FileOpen haben und wollte nicht, um es in eine große Zeichenfolge für die Geschwindigkeit zu montieren.
2) dann habe ich aus char[] Strings nur mit den Arrays b und a erstellt - und sie aufgeteilt
3) und schließlich der einfachste Code - jeder String wurde zu einem großen Textstring zusammengefasst (mit allen Daten, auch den unnötigen) und aufgeteilt
Es stellte sich heraus, dass alle 3 Varianten in der Geschwindigkeit ungefähr gleich sind. Deshalb habe ich mich für die einfachste Variante entschieden - die 3. Es wird einfacher sein, sie später an andere Vorlagen mit anderen Daten anzupassen.
Aus irgendeinem Grund dachte ich, dass die Arbeit mit einem char-Array schneller sein wird als das Zusammensetzen zu einem String und das Aufteilen in ein String-Array durch ". Offensichtlich ist split gut auf Geschwindigkeit optimiert.
Es wäre gut, wenn die MQ-Entwickler einige der Standard-JSON-Parser in die Sprache aufnehmen würden. JASON parst nicht alle Varianten korrekt und anscheinend ist der Entwickler nicht mehr da und es besteht keine Hoffnung auf eine Lösung.Bibliothek der neuesten Version "1.13" - heruntergeladen von GitHub
Es gibt einen umgeschriebenen Fork des Codes aus dieser Topik (1.12). Haben Sie mit dem Original überprüft?
PS: Ich habe 1.12 original und stark korrigiert. Ich erinnere mich nicht, woher die Korrekturen kamen, wahrscheinlich aus diesem Zweig.