2017-11-13 4 views
-1

ich folgende mehrdimensionale JavaScript-Array haben:Parsen mehrdimensionale Javascript JSON-Array mit PHP

My js array

und ich möchte es analysieren und einige Werte von ihm (Name und URL) zurückkehren

aber wenn bereinigen es ein wenig $jsonData = str_replace('var stations = ','' ,$jsonDataUrl); und versuchen, es als JSON mit json_decode($jsongoeshere) zu analysieren, der Parser Fehler 4 zurückgegeben, auch wenn diese URL hatte mir mitgeteilt, dass die JSON-Eingabe in JavaScript gültig ist.

So jetzt bin ich ein bisschen verloren auf, wie man es analysiert.

+2

Ich denke, Ihr Array ist ein Array von Json. Also versuchen Sie JSON zuerst zu dekodieren und dann aufzuräumen. Aktualisieren Sie die Frage, wenn sich etwas geändert hat – sobbe

+0

Ihr Codebeispiel bedeutet, dass Sie versuchen, 'str_replace' für die URL auszuführen, im Gegensatz zu den Inhalten, die in der URL enthalten sind. Außerdem haben Sie das Semikolon am Ende von JS verlassen, bevor Sie mit PHP geparst haben. Schließlich fehlen Ihnen doppelte Anführungszeichen um viele, viele Eigenschaftsnamen. – JAAulde

Antwort

1

quoted object property name expected ist Ihr Fehler.

Ihre JSON-Zeichenfolge ist nicht gültig, Objekteigenschaftsnamen müssen in Anführungszeichen gesetzt werden.

Diese

{ 
     "aland": [ 
     { 
      name: "Ålands Radio", 
      logo: "stations/images-europe/aland/Ålands Radio.png", 
      url: "http://194.110.182.131:8000/stream.ogg" 
     }, 
... 

Sollte

{ 
     "aland": [ 
     { 
      "name": "Ålands Radio", 
      "logo": "stations/images-europe/aland/Ålands Radio.png", 
      "url": "http://194.110.182.131:8000/stream.ogg" 
     }, 
... 

Diese JSON Validatoren geben Sie den richtigen Fehler.

https://jsonlint.com/ & https://jsonformatter.curiousconcept.com/

Auch, was @JJAulde sagte, ist wahr.

Sie haben ein Semikolon am Ende Ihrer JSON-Zeichenfolge, die dazu führt, dass die Syntaxanalyse fehlschlägt. Sie müssen rtrim oder str_replace es wie Sie mit var stations =

+1

Property Quoting ist nur eines der Probleme. Das abschließende Semikolon (';') ist ein anderes. – JAAulde

+1

@JAAulde Danke. Ich habe meine Antwort aktualisiert. – bassxzero