array ohne anführungszeichen / Alternative zu String / chart.js

Gast #6263402
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:
1
[{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:
1
"{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...
Gast #6264850
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?
Gast #6264924
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
#6265104
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

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.