Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mit JSON hierarchisch durchsuchen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] mit JSON hierarchisch durchsuchen

    ich habe folgenden JSON kompatiblen code:
    Code:
    ...
    results":
    {"td":[
    {"a":
    {"href":"https://de.finance.yahoo.com/q?s=DRI.DU","content":"DRI.DU"}},{"p":"DRILLISCH"},
    {"p":"DE0005545503"},
    {"p":"27,67"},
    {"p":"Aktien"},
    {"p":"DUS"}, 
    ...
    Jetzt möchte ich nach dem Eintrag DUS suchen und wenn vorhanden mir den Eintrag DRI.DU ausgeben lassen.

    Bisher mein Code, um JSON kompatibel zu sein:
    PHP-Code:
    $result file_get_contents($url);                        // Lesen der Daten.
    $json preg_replace('/.+?({.+}).+/''$1'$result);    // Umwandeln in JSON.
    $object json_decode($json);                            // In JSON-Objekt umwandeln.
    $data $object->results->td;                            // Daten einschränken. 
    Jetzt die Abfrage:
    PHP-Code:
    ...    
    foreach(
    $data as $company) {
        if (
    $company->a->content == "DUS")
            
    $stockSymbol    $company->symbol;
    ... 
    Die Abfrage allein geht. Die Ausgabe allein auch. Nur die Kombination aus beiden geht nicht.
    Hat jemand eine Idee?


  • #2
    Wie sieht das JSON-Objekt aus? WAS geht nicht?

    Kommentar


    • #3
      Zitat von Tropi Beitrag anzeigen
      Wie sieht das JSON-Objekt aus? WAS geht nicht?
      Ich bekomme einfach gar nichts als Antwort ...

      Ich vermute, dass das Parsen nach "->a->content" tiefer in der Hierarchie ist als das Ergebnis, welches ich haben möchte: "->p".
      Keine Ahnung, ob dies so ist.
      Hatte auch schon mit dem Parameter "depth" rumprobiert - geht auch nicht.

      Kommentar


      • #4
        Wie gesagt, deswegen mach doch mal var_dump($object) und schau dir an wie die Hierarchie aussieht. Wir können dir das auch nicht sagen - zumal du ja auch nur einen Teil gepostet hast.

        Kommentar


        • #5
          Um auf tiefer verschachtelte Elemente zuzugreifen bzw. JSON zu "durchsuchen" hat sich folgender Weg als praktisch erwiesen:
          JSON -> Array -> XML -> XPath
          PHP-Klassen auf github

          Kommentar


          • #6
            http://goessner.net/articles/JsonPath/
            Standards - Best Practices - AwesomePHP - Guideline für WebApps

            Kommentar


            • #7
              Zitat von Tropi Beitrag anzeigen
              Wie gesagt, deswegen mach doch mal var_dump($object) und schau dir an wie die Hierarchie aussieht. Wir können dir das auch nicht sagen - zumal du ja auch nur einen Teil gepostet hast.
              Da heute die Konsole bei yahoo wieder geht, gibt es jetzt auch dies:
              Code:
              {
               "query": {
                "count": 48,
                "created": "2014-06-17T17:20:32Z",
                "lang": "en-US",
                "results": {
                 "td": [
                  {
                   "a": {
                    "href": "https://de.finance.yahoo.com/q?s=DRI.MU",
                    "content": "DRI.MU"
                   }
                  },
                  {
                   "p": "DRILLISCH"
                  },
                  {
                   "p": "DE0005545503"
                  },
                  {
                   "class": "ticker_up",
                   "p": "27,30"
                  },
                  {
                   "p": "Aktien"
                  },
                  {
                   "p": "MUN"
                  },
                  {
                   "a": {
                    "href": "https://de.finance.yahoo.com/q?s=DRI.DE",
                    "content": "DRI.DE"
                   }
                  },
                  {
                   "p": "Drillisch AG"
                  },
                  {
                   "p": "DE0005545503"
                  },
                  {
                   "class": "ticker_up",
                   "p": "27,57"
                  },
                  {
                   "p": "Aktien"
                  },
                  {
                   "p": "GER"
                  }
                 ]
                }
               }
              }

              Kommentar


              • #8
                Danke für die Infos.

                Dachte, es geht ggfl. auch einfacher. Bin halt Anfänger und wollte die Einbindung externer Module auf ein Minimum beschränken.

                Kommentar

                Lädt...
                X