Parsen von JSON mit PHP jsonpath

8

Ich versuche, ein JSON in PHP mit jsonpath .... zu analysieren.

Mein JSON kommt von diesem

Ссылка

(es ist ziemlich zu lang, hier ausschneiden / einfügen, aber Sie können es in einer Browsersitzung sehen ....)

Der JSON ist ein gültiger JSON (ich habe ihn mit Ссылка ...) überprüft.

Ich habe den jsonpath-Ausdruck mit Ссылка ausprobiert und alles scheint gut zu funktionieren, aber wenn ich alles in mein PHP-Codebeispiel unten setze ....

%Vor%

... keine Werte werden gedruckt .. nur ein "falscher" Wert.

Irgendetwas läuft in meinem jsonpath-Ausdruck falsch ab, wenn ich es in meinen PHP-Code lege: Der Fehler, der herauskommt, ist der folgende

%Vor%

Wahrscheinlich muss ich meinen jsonpath fliehen, um ihn in PHP zu verwenden, aber ich weiß nicht, wie ... jeder Vorschlag geschätzt wird ...

HINWEIS: Ich muss jsonpath-Ausdrücke wie ?(@.descrizione=="A.S.U.I. - Trieste") verwenden und ich kann nicht den "positionalen" json-Pfad verwenden ...

Ich habe auch versucht, jsonpath-0.8.3.php von hier Ссылка , aber nichts ändert sich ...

Vorschläge?

Vielen Dank im Voraus ...

    
Cesare 18.08.2017, 21:48
quelle

5 Antworten

2

Ich würde vorschlagen, eine andere Bibliothek für JsonPath zu verwenden, wenn die, mit der Sie arbeiten, einen Fehler aufweist und der Drittanbieter-Dienst keinen Fehler in der Abfrage angibt.

Hier sind ein paar:

Ich bin mir ziemlich sicher, dass es mehr gibt. Hoffe das hilft.

    
t1gor 21.08.2017 11:16
quelle
2

Sie können json_decode verwenden, um es in ein natives PHP-Array zu konvertieren, dann können Sie hhb_xml_encode (von Ссылка ) verwenden Konvertiere das Array in ein XML, dann kannst du DOMDocument :: loadHTML verwenden, um das XML in ein DOMDocument zu konvertieren, dann kannst du DOMXPath :: query verwenden, um es mit XPaths ... zu durchsuchen ...

Beispiel:

%Vor%

ps, die Zeilen require_once ('hhb_.inc.php'); $json_raw = (new hhb_curl ( '', true ))->exec ( 'https://servizionline.sanita.fvg.it/tempiAttesaService/tempiAttesaPs' )->getStdOut (); holen nur die URL und setzen den json in $ json_raw (mit gzip compressed transfer, um die Dinge zu beschleunigen btw), ersetze ihn mit was auch immer du willst, um ihn in $ json_raw, den tatsächlichen curl zu holen Die Bibliothek, die ich benutzt habe, stammt von Ссылка

druckt derzeit:

%Vor%

hoffe, das ist, was Sie gesucht haben, ich rate von der "xpath", die Sie zur Verfügung gestellt.

    
hanshenrik 27.08.2017 12:51
quelle
1

xpath ist zu kompliziert für deine Aufgabe und Overkill im Allgemeinen ...

benutze einfach den Standard json_decode() , hol dir das entsprechende PHP-Objekt und navigiere mit stardard für / while-Schleifen und Regexes

Ich glaube auch, dass Ihre Frage irreführend ist, Ihr Problem besteht nicht darin, einen JSON zu analysieren (das macht json_decode() automatisch), Ihr Problem ist das Extrahieren von Daten aus xpath. Ich schlage vor, einen Refactor Ihrer Frage zu haben genau was schief geht und was deine Absicht ist

Wenn Sie in einen präzisen JSON-Knoten (oder eine Gruppe von Knoten) absteigen müssen, warum tun Sie das nicht mit for-Schleifen und Regexes?

    
Gianluca Ghettini 21.08.2017 11:20
quelle
1

ich gelöst habe JsonPath Bibliothek Implementierung zu ändern: (Ref. Ссылка ). Jetzt verwende ich Skyscanner JsonPath Implementierung

Ein paar Probleme bei der Installation (für mich, ich Komponisten nie benutzt ...), aber das skyskanner Team mich unterstützt (ref. Ссылка ) und jetzt habe ich den PHP-Code ....

%Vor%

in ./tmp Ich habe was ich von Composer

bekomme

... das funktioniert gut und auf diese Art und Weise kann ich meine Json Abfrage tun, möglicherweise, ohne seine genaue Struktur zu wissen,

    
Cesare 20.09.2017 19:24
quelle
0

%Vor%
    
TRC4 27.03.2018 05:47
quelle

Tags und Links