JSON encode/decode Problem

  • ich habe eine PHP anwendung die dateneinträge aus der Datanbank holt und die elemente als JSON object kodiert.
    der output sollte

    {"users":[{'id':'1','userid':'fhardy','firstname':'Frank','lastname':'Hardy','email':'fhardy@hauntedclock.com'},{'id':'2','userid':'jhardy','firstname':'Joe','lastname':'Hardy','email':'jhardy@hauntedclock.com'},{'id':'3','userid':'ndrew','firstname':'Nancy','lastname':'Drew','email':'ndrew@hauntedclock.com'},{'id':'4','userid':'sdoo','firstname':'Scooby','lastname':'Doo','email':'sdoo@mysterymachine.com'}]}

    sein damit der client es erfolgreich empfangen kann.

    Das selbe output sollte man aber dynamish erstellen mit der code;
    <?php
    // Create an array to hold our results
    $arr = array();
    //Execute the query
    $rs = mysql_query("SELECT * FROM users");

    // Add the rows to the array
    while($obj = mysql_fetch_object($rs)) {
    $arr[] = $obj;
    }
    $content = '{"users":'.json_encode($arr).'}';

    //$content = str_replace(' ', '', $content);
    //echo $content;

    ?>


    die sogenannte code generiert genau dieselbe output wie oben aber der client kann das irgendwie nicht dekodieren.

    Wo kann das problem liegen?

  • Wieso baust du da einen String zusammen und nicht ein Array?

    PHP
    $content = json_encode(array('users' => $arr));
  • was genau meinst du mit 'kann das irgendwie nicht dekodiern'? was passiert? gibt es einen fehler beim decodieren oder nach dem decodieren?
    mit

    PHP
    $o = json_decode($str);


    bekommst du ein objekt zurück, mit

    PHP
    $o = json_decode($str, true);


    ein assoziatives array. je nachdem kannst du entweder $o->users oder $o['users'] verwenden...

    "All through my life I've had this strange unaccountable feeling that something was going on in the world, something big, even sinister, and no one would tell me what it was."
    "No," said the old man, "that's just perfectly normal paranoia. Everyone in the Universe has that."

    &#128513;&#128514;&#128515;&#128516;&#128517;&#128518;&#128519;&#128520;&#128521;&#128522;&#128523;&#128524;&#128525;&#128526;&#128527;&#128528;&#128530;&#128531;&#128532;&#128534;&#128536;&#128538;&#128540;&#128542;&#128544;&#128545;&#128546;&#128547;&#128549;&#128552;&#128553;&#128554;&#128555;&#128557;&#128560;&#128561;&#128562;&#128563;&#128565;&#128566;&#128567;

  • Ich nehm einfach mal an, das Problem liegt irgendwo anders.

    PHP
    $arr = array();
    $arr[] = array('id' => '1', 'userid' => 'fhardy', 'firstname' => 'Frank', 'lastname' => 'Hardy', 'email' => 'fhardy@hauntedclock.com');
    $arr[] = array('id' => '2', 'userid' => 'jhardy', 'firstname' => 'Joe', 'lastname' => 'Hardy', 'email' => 'jhardy@hauntedclock.com');
    $arr[] = array('id' => '3', 'userid' => 'ndrew', 'firstname' => 'Nancy', 'lastname' => 'Drew', 'email' => 'ndrew@hauntedclock.com');
    $arr[] = array('id' => '4', 'userid' => 'sdoo', 'firstname' => 'Scooby', 'lastname' => 'Doo', 'email' => 'sdoo@hauntedclock.com');
    $content = json_encode(array('users' => $arr));
    print "$content\n";
    
    
    print_r(json_decode($content));

    Das funktioniert ausgezeichnet.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!