Forum: PC-Programmierung array ohne anführungszeichen / Alternative zu String / chart.js


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von fma89 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
meine Frage, die ich im folgenden erläutere, schon einmal kurz genannt: 
Ist es möglich ein Array zu erstellen, ohne das die einzelnen Positionen 
mit Anführungszeichen "" abgetrennt werden? Ein String wird leider nicht 
akzeptiert.

Nun zum Hintergrund:
ich übermittle mit einem PHP-Skript eine Json an ein Javascript-Skript. 
Das klappt im Prinzip auch. Im JS-Skript wird dieses Json Array dann 
aufgeteilt und für chart.js als Datensatz benutzt. Das klappt auch 
super.
Die x-Achse von chart.js ist als "date" definiert, was die Datensätze 
logischerweise zeitlich skaliert anordnet. Das klappt solange, wie es 
exakt gleichviele x- wie y- Werte im Array gibt.
Da ich aber aus 3 verschiedenen Datenbanken Werte hole, die alle 
verschiedene x-Werte (Zeit) besitzen, aber im gleichen Koordinatensystem 
angezeigt werden sollen, wird das ganze etwas komplizierter.

Im Prinzip ist meine Frage:
der Bereich "data: xxx" von chart.js akzeptiert keinen String, der 
vorher definiert wurde. Sondern nur direkt dort hingeschriebene Werte 
oder Arrays.
Da es sich bei mir um sich dynamisch verändernde Daten handelt kommt 
somit nur ein Array in Frage.
Dieses Format soll bei "data: " stehen, damit es klappt und ein Graph 
angezeigt werden kann:
[{x: "2020-05-13 12:00:00", y: 5}, {x: "...", y: 7}, {...}] 

Das würde mit auch als Array mit allen Werten klappen, außer mit Date 
Werten. Diese müssen nämlich in Anführungsstrichen stehen. Wenn ich 
einen Array erstelle, werden aber alle Positionen des Array einzeln in 
Anführungsstrichen gesetzt. Damit kommt chart.js dann aber nicht mehr 
klar mit.
Ein Array sieht so aus, wenn er dynamisch und abhängig von der SQL 
Abfrage erzeugt wird:
"{x: "2020-05-13 12:00:00", y: 5}", "{x: "...", y: 7}", "{...}", ... 
  (Je nachdem, kommt vor die Anführungszeichen des Datums noch ein 
Backslash \". Ändert aber am Problem im Prinzip nichts)
Natürlich geht das dann nicht.

Gibt es eine Möglichkeit, diese Anführungszeichen, die innerhalb eines 
Arrays die einzelnen Positionen abtrennen, auszublenden?
Diese zerstören nämlich die geforderte Strunkturt. Und ich habe keine 
Ahnung wie ich sonst dynamische Werte an chart.js übergeben soll. Denn 
da ich verschiedene x-Werte habe, muss ich immer beide Werte als Paar 
bei data: angeben.
Mit einem String wäre alles sehr einfach, aber den unterstützt chart.js 
an dieser Stelle leider nicht...

Ich würde mich freuen wenn ihr mir vielleicht eine Idee geben könntet. 
Denn ich würde wirklich gerne die verschiedenen Kurven in das gleiche 
chart packen...

von Dirk B. (dirkb2)


Bewertung
-1 lesenswert
nicht lesenswert
Quick&dirty: mappe (wandle) "{ zu { und }" zu }

von fma89 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Dirk B. schrieb:
> Quick&dirty: mappe (wandle) "{ zu { und }" zu }

Aber mit map kann ich doch nur tatsächlich vorhandene Werte / Einträge 
im Array verändern oder nicht?
Die " vor { und nach } werden ja nur bei der Ausgabe hinzugefügt, da die 
Elemente im inneren ein String sind oder? Diese sind ja aber bei der 
Erstellung des Array kein richtiger Bestandteil.
Wenn ich also sage, dass er "{ zu { wandeln soll, gibt es "{ ja noch 
garnicht, da die " eben erst später zugefügt werden, oder?

von DPA (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Also ist dein Problem, dass du fehlerhafte JSON daten sendest? Ich weiss 
nicht, was du da in deinen php und js scripten verzapfst, aber wenn man 
in php (assoziative)arrays und objekte mit json_encode encodierst, 
sendest, und in js wieder als json einliest (z.B. mit JSON.parse), dann 
kommen da auch wieder einfache Arrays und Objekte raus. Wenn nicht, dann 
machst du irgend was falsch.

https://php.net/json_encode

von Sheeva P. (sheevaplug)


Bewertung
0 lesenswert
nicht lesenswert
fma89 schrieb:
> Gibt es eine Möglichkeit, diese Anführungszeichen, die innerhalb eines
> Arrays die einzelnen Positionen abtrennen, auszublenden?

Falscher Ansatz. Der Richtige Ansatz (©) ist, die Daten zuerst 
serverseitig in haargenau die Struktur zu bringen, die Dein 
Client-Javascript verarbeiten kann.

von Jan H. (j_hansen)


Bewertung
0 lesenswert
nicht lesenswert
fma89 schrieb:
> Gibt es eine Möglichkeit, diese Anführungszeichen, die innerhalb eines
> Arrays die einzelnen Positionen abtrennen, auszublenden?

Schöne Lösung: die Daten richtig schicken. Würde da ansetzen.

Solala-Lösung: Array am Client durchgehen und ins richtige Format 
bringen - JSON.parse als Denkanstoß

Murkslösung: irgendwelche Zeichen im JSON-String manipulieren

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.