REST API JSON Ausgabe Formatieren / Einzelne Werte auslesen

Hallo Community,

wenn man über die API sich z.B. die Artikeldetails auslesen lässt, bekommt man ja immer eine JSON Array wie folgt:

 Array ( [0] =\> Array ( [id] =\> 3 [number] =\> 0 [customerId] =\> 1 [paymentId] =\> 7 [dispatchId] =\> 9 [name] =\> Automatik Gästeschirm "Mühlheim" [keywords] =\> bett, bed, steppbett, mühldorfer usw.

Wie kann man denn nun nur den tatsächlichen Wert ausgeben, z.B. nur den Namen (Automatik Gästeschirm „Mühlheim“). Am besten direkt im HTML Format und wirklich nur den Wert der rauskommt. Gibt es hier eine Möglichkeit?

Wäre klasse wenn Ihr mir helfen könnt.

 

Gibt es villeicht die Möglichkeit das direkt in php so zu steuern, das nur die gewünschten Werte angezeigt werden?

Uhm… Wenn du die Standard-Klasse von Shopware für die API-Kommunikation nutzt, dann sollte der Aufruf ja in etwa so aussehen

 $arr\_artikel = $client-\>get("articles/",$optionalOptions);

Nun sollte es möglich sein einfach mit den daraus resultierenden Ergebnissen zu arbeiten…

if(is_array($arr_artikel) && isset($arr_artikel["data"])) {

  foreach($arr_artikel["data"] as $artikel) {
     echo $artikel["name"];
  }

}

 

1 „Gefällt mir“

Hi PStadtfeld,

klasse und vielen Dank für deine Antwort, das hilft schon mal weiter. Zuerst wird jetzt das Array gezeigt und darunter dann das Ergebnis von dir. Wie kann man den oberen Teil ausbelenden und nur das Ergebnis von dir Anzeigen?

 

Uhm… Ich bin mir nicht sicher, ob ich das richtig verstanden habe, aber ich denke es liegt an den echo - Befehlen in der Standard-Klasse.

Die müsstest du mal eben auskommentieren, damit der nichts mehr ausgibt, sondern nur noch seine Arbeit erledigt.

Also praktisch so:

HTTP: $httpCode";
        if (null === $decodedResult = json_decode($result, true)) {
            $jsonErrors = [
                JSON_ERROR_NONE => 'No error occurred',
                JSON_ERROR_DEPTH => 'The maximum stack depth has been reached',
                JSON_ERROR_CTRL_CHAR => 'Control character issue, maybe wrong encoded',
                JSON_ERROR_SYNTAX => 'Syntaxerror',
            ];
            //echo 'Could not decode json';
            $this->connect_success = FALSE;
            $this->error_msg = 'json_last_error: ' . $jsonErrors[json_last_error()];
            //echo 'Raw:';
            //echo '' . print_r($result, true) . '';

            return;
        }
        if (!isset($decodedResult['success'])) {
            $this->connect_success = FALSE;
            $this->error_msg = 'Invalid Response';

            return;
        }
        if (!$decodedResult['success']) {
            //echo 'No Success';
            $this->connect_success = FALSE;
            $this->error_msg = '' . $decodedResult['message'] . '';
            if (array_key_exists('errors', $decodedResult) && is_array($decodedResult['errors'])) {
                $this->error_msg .= '' . join('', $decodedResult['errors']) . '';
            }

            return;
        }
        //echo 'Success';
        if (isset($decodedResult['data'])) {
            $this->connect_success = TRUE;
            //echo '' . print_r($decodedResult['data'], true) . '';
        }

        return $decodedResult;
    }
}

?>

 

 

1 „Gefällt mir“

Hallo PStadtfeld,

klasse, du bist der Hammer!! 

Weisst du zufällig noch wie man bei verschiedenen Subshops per ShopID filtern kann? Hab in dem Guide nichts gefunden.

Vielen vielen Dank!

Nein das geht so weit ich weis nicht.

Man kann die Apiergebnisse zwar um einen Filter ergänzen, dieser erstreckt sich aber nur über die Artikel-Attribute, also z.B.
 

array(

 filter => array(

   'property' => mainDetail.number,
   'value' => "129302132320392"
 )
)

Für Subshops fehlen einfach die richtigen Verknüpfungen oder Felder, selbst Kategorien scheinen sich nicht richtig filtern zu lassen und selbst wenn, so müsstest du in der Kategorie-Hierarchie ganz nach oben klettern um die Überkategorie des Subshops zu erreichen…

 

Es gibt 2 Möglichkeiten…

  1. Du holst dir die Kategorien und versuchst anhand der Kategorie-Struktur zu ermitteln, zu welcher Hauptkategorie der Artikel zugeordnet wurde…

(z.B. Kuchen.ParentID->Nahrungsmittel.ParentID->Produkte.ParentID->Deutsch)

  1. Du versuchst das ganze nicht über die Api, sondern über die Datenbank.

Also per mysql oder mysqli_connect Verbindung direkt mit der DB aufbauen und dann per SQL-Befehl die Artikelnummern holen…

 Die kannst du dann theoretisch wieder per Api holen. (while($artikel = mysql_fetch_row/array/assoc($ergebnisse)).

 

  1. Du legst dir eine Referenztabelle an mit Artikelnummern und Subshop, dann kannst du anhand der Tabelle die Ergebnise durch Artikelnummern eingrenzen… ist natürlich auch mega aufwendig…