tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von saftmeister
  • 1 Beitrag von saftmeister
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
373
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Myar Myar ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Beiträge
    79
    Hallöchen!

    Ich habe ein kleines Problem mit json decode.

    Ich bekomme per GET einen String per AJAX übergeben. Ein mehrdimensionales Array.
    Der String sieht dann so aus:

    \"[{\\\"mid\\\":\\\"4\\\",\\\"text\\\":\\\"50\\\"},{\\\"mid\\\":\\\"5\\\",\\\"text\\\":\\\"weiß\\\"},{\ \\"mid\\\":\\\"6\\\",\\\"text\\\":\\\"ohne Dimmer\\\"},{\\\"mid\\\":\\\"11\\\",\\\"text\\\":\\\"30\\\"}]\"
    So kann man den nicht gebrauchen.

    Also mache ich folgendes:
    PHP-Code:
    $array str_replace('\\'''$array);
    $array str_replace('"[''['$array);
    $array str_replace(']"'']'$array); 
    Damit der String so aussieht:
    [{"mid":"4","text":"50"},{"mid":"5","text":"weiß"},{"mid":"6","text":"ohne Dimmer"},{"mid":"11","text":"30"}]
    Dennoch bekomme ich hier:
    PHP-Code:
    $array json_decode($arraytrue);
    print_r($array); 
    NULL raus. Wo liegt der Fehler?

    Gruß
    Myar
    Geändert von Myar (04.01.12 um 13:01 Uhr)
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Hi, schau mal hier:

    Code php:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    <?php
    header('Content-Type: text/html; charset=utf-8');
    $json = '\"[{\\\"mid\\\":\\\"4\\\",\\\"text\\\":\\\"50\\\"},{\\\"mid\\\":\\\"5\\\",\\\"text\\\":\\\"weiß\\\"},{\ \\"mid\\\":\\\"6\\\",\\\"text\\\":\\\"ohne Dimmer\\\"},{\\\"mid\\\":\\\"11\\\",\\\"text\\\":\\\"30\\\"}]\"';
     
    $json = substr(stripcslashes(stripcslashes($json)), 1, -1);
     
    echo $json;
     
    $data = json_decode($json, true);
     
    if($data)
        var_dump($data);
    else {
     switch(json_last_error())
     {
      case JSON_ERROR_DEPTH:
       echo ' - Maximale Stacktiefe überschritten';
      break;
      case JSON_ERROR_CTRL_CHAR:
       echo ' - Unerwartetes Steuerzeichen gefunden';
      break;
      case JSON_ERROR_SYNTAX:
       echo ' - Syntaxfehler, ungültiges JSON';
      break;
      case JSON_ERROR_NONE:
       echo ' - Keine Fehler';
      break;
      case JSON_ERROR_UTF8:
        echo 'UTF-8-Fehler!';
        break;
     }
    }
    Myar bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    Myar Myar ist offline Mitglied Silber
    Registriert seit
    Dec 2007
    Beiträge
    79
    Danke für die Antwort!

    Aber:

    PHP Fatal error: Call to undefined function json_last_error()
    Laut PHP Manual müsste es die geben, ja
    Edit:

    Oh, ungeachtet der Funktion... dein Code hat geholfen, danke!
    Geändert von Myar (04.01.12 um 13:49 Uhr)
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Die gibt's erst seit PHP 5.3. Hast du evtl. eine ältere Version? Mein Beispiel funktioniert aber auch ohne den json_last_error(). Was du eigentlich brauchst, ist nur der Teil mit

    Code php:
    1
    
    $json = substr(stripcslashes(stripcslashes($json)), 1, -1);

    Ich hab das der Vollständigkeit nur mit der Fehler-Auswertung eingebaut. Du könntest allerdings noch versuchen, error_reporting() und display_errors einzuschalten.
    Myar bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

Ähnliche Themen

  1. Frage zu JSON. HTML-Konstrukt mit JSON übergeben
    Von Jan-Frederik Stieler im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 16.04.11, 16:04
  2. JSON - Problem mit Umlauten
    Von SAMariter im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 09.06.10, 10:28
  3. Problem mit JSON / Umlauten
    Von Kopfballstar im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 02.02.09, 12:58
  4. SQL - decode Problem
    Von FanClub im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 14.07.08, 18:10
  5. Problem mit Umlaut / UTF-Decode
    Von Kopfballstar im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 27.05.08, 14:22