Umgang mit Daten in einem PHP-JSON-Objekt


85

Trenddaten von der Twitter Search API in JSON.

Abrufen der Datei mit:

$jsonurl = "http://search.twitter.com/trends.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);

Wie arbeite ich mit Daten aus diesem Objekt? Als Array? Es müssen nur wirklich Daten aus den [Name] -Werten extrahiert werden.

JSON-Objekt enthält:

stdClass Object
(
    [trends] => Array
        (
            [0] => stdClass Object
                (
                    [name] => Vote
                    [url] => http://search.twitter.com/search?q=Vote
                )

            [1] => stdClass Object
                (
                    [name] => Halloween
                    [url] => http://search.twitter.com/search?q=Halloween
                )

            [2] => stdClass Object
                (
                    [name] => Starbucks
                    [url] => http://search.twitter.com/search?q=Starbucks
                )

            [3] => stdClass Object
                (
                    [name] => #flylady
                    [url] => http://search.twitter.com/search?q=%23flylady
                )

            [4] => stdClass Object
                (
                    [name] => #votereport
                    [url] => http://search.twitter.com/search?q=%23votereport
                )

            [5] => stdClass Object
                (
                    [name] => Election Day
                    [url] => http://search.twitter.com/search?q=%22Election+Day%22
                )

            [6] => stdClass Object
                (
                    [name] => #PubCon
                    [url] => http://search.twitter.com/search?q=%23PubCon
                )

            [7] => stdClass Object
                (
                    [name] => #defrag08
                    [url] => http://search.twitter.com/search?q=%23defrag08
                )

            [8] => stdClass Object
                (
                    [name] => Melbourne Cup
                    [url] => http://search.twitter.com/search?q=%22Melbourne+Cup%22
                )

            [9] => stdClass Object
                (
                    [name] => Cheney
                    [url] => http://search.twitter.com/search?q=Cheney
                )

        )

    [as_of] => Mon, 03 Nov 2008 21:49:36 +0000
)
php  json 

Antworten:


146

Du meinst so etwas?

<?php

$jsonurl = "http://search.twitter.com/trends.json";
$json = file_get_contents($jsonurl,0,null,null);
$json_output = json_decode($json);

foreach ( $json_output->trends as $trend )
{
    echo "{$trend->name}\n";
}

Gibt es andere Möglichkeiten, die Liste der Namen abzurufen, ohne Schleifen wie $ Trends ["Name"] oder $ Trends [] ["Name"] zu erstellen?
Min Soe

35

Wenn Sie verwenden json_decode($string, true), erhalten Sie keine Objekte, sondern alles als assoziatives oder zahlenindiziertes Array. Viel einfacher zu handhaben, da das von PHP bereitgestellte stdObject nichts anderes als ein dummer Container mit öffentlichen Eigenschaften ist, der nicht mit Ihrer eigenen Funktionalität erweitert werden kann.

$array = json_decode($string, true);

echo $array['trends'][0]['name'];

8

Verwenden Sie es einfach so, als wäre es ein Objekt, das Sie definiert haben. dh

$trends = $json_output->trends;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.