<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.json.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'function.json-decode.php',
    1 => 'json_decode',
    2 => 'Dekodiert eine JSON-Zeichenkette',
  ),
  'up' => 
  array (
    0 => 'ref.json.php',
    1 => 'JSON-Funktionen',
  ),
  'prev' => 
  array (
    0 => 'ref.json.php',
    1 => 'JSON-Funktionen',
  ),
  'next' => 
  array (
    0 => 'function.json-encode.php',
    1 => 'json_encode',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'reference/json/functions/json-decode.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.json-decode" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">json_decode</h1>
  <p class="verinfo">(PHP 5 &gt;= 5.2.0, PHP 7, PHP 8, PECL json &gt;= 1.2.0)</p><p class="refpurpose"><span class="refname">json_decode</span> &mdash; <span class="dc-title">Dekodiert eine JSON-Zeichenkette</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.json-decode-description">
  <h3 class="title">Beschreibung</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>json_decode</strong></span>(<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$json</code></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><span class="type"><a href="language.types.null.php" class="type null">?</a></span><span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span></span> <code class="parameter">$associative</code><span class="initializer"> = <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong></span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$depth</code><span class="initializer"> = 512</span></span>,<br>&nbsp;&nbsp;&nbsp;&nbsp;<span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$flags</code><span class="initializer"> = 0</span></span><br>): <span class="type"><a href="language.types.mixed.php" class="type mixed">mixed</a></span></div>

  <p class="para rdfs-comment">
   Konvertiert eine JSON-kodierte Zeichenkette in einen PHP-Wert.
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.json-decode-parameters">
  <h3 class="title">Parameter-Liste</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">json</code></dt>
     <dd>
      <p class="para">
       Der zu dekodierende <code class="parameter">json</code>-<a href="language.types.string.php" class="link">String</a>.
      </p>
      <p class="para">
       Diese Funktion funktioniert nur mit Zeichenketten, die UTF-8-kodiert
       sind.
      </p>
      
 <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
  <p class="para">
   PHP implementiert eine Obermenge von JSON wie im Original
   <a href="https://datatracker.ietf.org/doc/html/rfc7159" class="link external">&raquo;&nbsp;RFC 7159</a> beschrieben.
  </p>
 </p></blockquote>

     </dd>
    
    
     <dt><code class="parameter">associative</code></dt>
     <dd>
      <p class="para">
       Wenn <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, werden JSON-Objekte als assoziative <a href="language.types.array.php" class="link">Array</a>s zurückgegeben.
       Wenn <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong>, werden JSON-Objekte als <a href="language.types.object.php" class="link">Objekt</a>e zurückgegeben. Wenn
       <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong>, werden JSON-Objekte als assoziative <a href="language.types.array.php" class="link">Array</a>s oder <a href="language.types.object.php" class="link">Objekt</a>e
       zurückgegeben, abhängig davon, ob
       <strong><code><a href="json.constants.php#constant.json-object-as-array">JSON_OBJECT_AS_ARRAY</a></code></strong> in den
       <code class="parameter">flags</code> gesetzt ist.
      </p>
     </dd>
    
    
     <dt><code class="parameter">depth</code></dt>
     <dd>
      <p class="para">
       Die maximale Verschachtelungstiefe der zu dekodierenden Struktur.
       Der Wert muss größer als <code class="literal">0</code> sein und kleiner als oder
       gleich <code class="literal">2147483647</code>.
      </p>
     </dd>
    
    
     <dt><code class="parameter">flags</code></dt>
     <dd>
      <p class="para">
       Eine Bitmaske von <strong><code><a href="json.constants.php#constant.json-bigint-as-string">JSON_BIGINT_AS_STRING</a></code></strong>,
       <strong><code><a href="json.constants.php#constant.json-invalid-utf8-ignore">JSON_INVALID_UTF8_IGNORE</a></code></strong>,
       <strong><code><a href="json.constants.php#constant.json-invalid-utf8-substitute">JSON_INVALID_UTF8_SUBSTITUTE</a></code></strong>,
       <strong><code><a href="json.constants.php#constant.json-object-as-array">JSON_OBJECT_AS_ARRAY</a></code></strong>,
       <strong><code><a href="json.constants.php#constant.json-throw-on-error">JSON_THROW_ON_ERROR</a></code></strong>. Das Verhalten dieser
       Konstanten ist auf der Seite über die
       <a href="json.constants.php" class="link">JSON-Konstanten</a> beschrieben.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.json-decode-returnvalues">
  <h3 class="title">Rückgabewerte</h3>
  <p class="para">
   Gibt den in <code class="parameter">json</code> kodierten Wert als entsprechenden
   PHP-Typ zurück. Ohne Anführungszeichen werden die Werte
   <code class="literal">true</code>, <code class="literal">false</code> und
   <code class="literal">null</code> als <strong><code><a href="reserved.constants.php#constant.true">true</a></code></strong>, <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> bzw. <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> zurückgegeben. Wenn
   <code class="parameter">json</code> nicht dekodiert werden kann oder wenn die
   kodierten Daten tiefer verschachtelt sind, als es der Parameter für
   Verschachtelungstiefe erlaubt, wird <strong><code><a href="reserved.constants.php#constant.null">null</a></code></strong> zurückgegeben.
  </p>
 </div>


 <div class="refsect1 errors" id="refsect1-function.json-decode-errors">
  <h3 class="title">Fehler/Exceptions</h3>
  <p class="para">
   Wenn <code class="parameter">depth</code> außerhalb des erlaubten Bereichs liegt,
   wird ab PHP 8.0.0 ein <span class="classname"><a href="class.valueerror.php" class="classname">ValueError</a></span> ausgelöst, während
   vorher ein Fehler der Stufe <strong><code><a href="errorfunc.constants.php#constant.e-warning">E_WARNING</a></code></strong> ausgelöst wurde.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.json-decode-changelog">
  <h3 class="title">Changelog</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Version</th>
       <th>Beschreibung</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.3.0</td>
       <td>
        Die <code class="parameter">flags</code>-Konstante
        <strong><code><a href="json.constants.php#constant.json-throw-on-error">JSON_THROW_ON_ERROR</a></code></strong> wurde hinzugefügt.
       </td>
      </tr>

      <tr>
       <td>7.2.0</td>
       <td>
        <code class="parameter">associative</code> ist nun ein Nullable-Typ.
       </td>
      </tr>

      <tr>
       <td>7.2.0</td>
       <td>
        Die <code class="parameter">flags</code>-Konstanten
        <strong><code><a href="json.constants.php#constant.json-invalid-utf8-ignore">JSON_INVALID_UTF8_IGNORE</a></code></strong> und
        <strong><code><a href="json.constants.php#constant.json-invalid-utf8-substitute">JSON_INVALID_UTF8_SUBSTITUTE</a></code></strong> wurden hinzugefügt.
       </td>
      </tr>

      <tr>
       <td>7.1.0</td>
       <td>
        Ein leerer JSON-Schlüssel (&quot;&quot;) kann als leere Objekt-Eigenschaft
        kodiert werden, anstatt einen Schlüssel mit dem Wert
        <code class="literal">_empty_</code> zu verwenden.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.json-decode-examples">
  <h3 class="title">Beispiele</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 <span class="function"><strong>json_decode()</strong></span>-Beispiele</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$json </span><span style="color: #007700">= </span><span style="color: #DD0000">'{"a":1,"b":2,"c":3,"d":4,"e":5}'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">object(stdClass)#1 (5) {
    [&quot;a&quot;] =&gt; int(1)
    [&quot;b&quot;] =&gt; int(2)
    [&quot;c&quot;] =&gt; int(3)
    [&quot;d&quot;] =&gt; int(4)
    [&quot;e&quot;] =&gt; int(5)
}

array(5) {
    [&quot;a&quot;] =&gt; int(1)
    [&quot;b&quot;] =&gt; int(2)
    [&quot;c&quot;] =&gt; int(3)
    [&quot;d&quot;] =&gt; int(4)
    [&quot;e&quot;] =&gt; int(5)
}</pre>
</div>
    </div>
   </div>
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Zugriff auf ungültige Objekteigenschaften</strong></p>
    <div class="example-contents"><p>
     Auf Elemente von Objekten, die Zeichen enthalten, welche gemäß den
     Namenskonventionen von PHP nicht gültig sind (z. B. der Bindestrich), kann
     durch ein Umschließen des Namens mit geschweiften Klammern und einfachen
     Anführungszeichen zugegriffen werden.
    </p></div>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br />$json </span><span style="color: #007700">= </span><span style="color: #DD0000">'{"foo-bar": 12345}'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">$obj </span><span style="color: #007700">= </span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">);<br />print </span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;{</span><span style="color: #DD0000">'foo-bar'</span><span style="color: #007700">}; </span><span style="color: #FF8000">// 12345<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-3">
    <p><strong>Beispiel #3 Häufige Fehler bei der Verwendung von <span class="function"><strong>json_decode()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #FF8000">// die folgenden Zeichenketten sind gültiges JavaScript aber kein gültiges JSON<br /><br />// der Name und der Wert müssen in doppelten Anführungszeichen eingeschlossen werden<br />// einfache Anführungszeichen sind ungültig<br /></span><span style="color: #0000BB">$bad_json </span><span style="color: #007700">= </span><span style="color: #DD0000">"{ 'bar': 'baz' }"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$bad_json</span><span style="color: #007700">); </span><span style="color: #FF8000">// null<br /><br />// der Name muss in doppelten Anführungszeichen eingeschlossen werden<br /></span><span style="color: #0000BB">$bad_json </span><span style="color: #007700">= </span><span style="color: #DD0000">'{ bar: "baz" }'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$bad_json</span><span style="color: #007700">); </span><span style="color: #FF8000">// null<br /><br />// nachfolgende Kommata sind nicht erlaubt<br /></span><span style="color: #0000BB">$bad_json </span><span style="color: #007700">= </span><span style="color: #DD0000">'{ bar: "baz", }'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$bad_json</span><span style="color: #007700">); </span><span style="color: #FF8000">// null<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
   <div class="example" id="example-4">
    <p><strong>Beispiel #4 Fehler bei der Verwendung von <code class="parameter">depth</code></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br /></span><span style="color: #FF8000">// Einige Daten mit einer maximalen Tiefe von 4<br />// (array -&gt; array -&gt; array -&gt; string) kodieren<br /></span><span style="color: #0000BB">$json </span><span style="color: #007700">= </span><span style="color: #0000BB">json_encode</span><span style="color: #007700">(<br />    array(<br />        </span><span style="color: #0000BB">1 </span><span style="color: #007700">=&gt; array(<br />            </span><span style="color: #DD0000">'englisch' </span><span style="color: #007700">=&gt; array(<br />                </span><span style="color: #DD0000">'One'</span><span style="color: #007700">,<br />                </span><span style="color: #DD0000">'January'<br />            </span><span style="color: #007700">),<br />            </span><span style="color: #DD0000">'französisch' </span><span style="color: #007700">=&gt; array(<br />                </span><span style="color: #DD0000">'Une'</span><span style="color: #007700">,<br />                </span><span style="color: #DD0000">'Janvier'<br />            </span><span style="color: #007700">)<br />        )<br />    )<br />);<br /><br /></span><span style="color: #FF8000">// Die Fehler für unterschiedliche Verschachtelungstiefen anzeigen.<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">4</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">'Letzter Fehler: '</span><span style="color: #007700">, </span><span style="color: #0000BB">json_last_error_msg</span><span style="color: #007700">(), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">, </span><span style="color: #0000BB">true</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">));<br />echo </span><span style="color: #DD0000">'Letzter Fehler: '</span><span style="color: #007700">, </span><span style="color: #0000BB">json_last_error_msg</span><span style="color: #007700">(), </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">, </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">array(1) {
  [1]=&gt;
  array(2) {
    [&quot;English&quot;]=&gt;
    array(2) {
      [0]=&gt;
      string(3) &quot;One&quot;
      [1]=&gt;
      string(7) &quot;January&quot;
    }
    [&quot;French&quot;]=&gt;
    array(2) {
      [0]=&gt;
      string(3) &quot;Une&quot;
      [1]=&gt;
      string(7) &quot;Janvier&quot;
    }
  }
}
Letzter Fehler: No error

NULL
Letzter Fehler: Maximum stack depth exceeded</pre>
</div>
    </div>
   </div>
   <div class="example" id="example-5">
    <p><strong>Beispiel #5 <span class="function"><strong>json_decode()</strong></span> von großen Ganzzahlen</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$json </span><span style="color: #007700">= </span><span style="color: #DD0000">'{"number": 12345678901234567890}'</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">json_decode</span><span style="color: #007700">(</span><span style="color: #0000BB">$json</span><span style="color: #007700">, </span><span style="color: #0000BB">false</span><span style="color: #007700">, </span><span style="color: #0000BB">512</span><span style="color: #007700">, </span><span style="color: #0000BB">JSON_BIGINT_AS_STRING</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">object(stdClass)#1 (1) {
  [&quot;number&quot;]=&gt;
  float(1.2345678901235E+19)
}
object(stdClass)#1 (1) {
  [&quot;number&quot;]=&gt;
  string(20) &quot;12345678901234567890&quot;
}</pre>
</div>
    </div>
   </div>
  </p>
 </div>


 <div class="refsect1 notes" id="refsect1-function.json-decode-notes">
  <h3 class="title">Anmerkungen</h3>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Die JSON-Spezifikation ist kein JavaScript, sondern eine Teilmenge davon.
   </p>
  </p></blockquote>
  <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
   <p class="para">
    Tritt ein Dekodierungsfehler auf, kann
    <span class="function"><a href="function.json-last-error.php" class="function">json_last_error()</a></span> verwendet werden, um die exakte Art
    des Fehlers zu ermitteln.
   </p>
  </p></blockquote>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.json-decode-seealso">
  <h3 class="title">Siehe auch</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.json-encode.php" class="function" rel="rdfs-seeAlso">json_encode()</a> - Liefert die JSON-Darstellung eines Wertes</span></li>
    <li><span class="function"><a href="function.json-last-error.php" class="function" rel="rdfs-seeAlso">json_last_error()</a> - Gibt den letzten aufgetretenen Fehler zur&uuml;ck</span></li>
    <li><span class="function"><a href="function.json-last-error-msg.php" class="function" rel="rdfs-seeAlso">json_last_error_msg()</a> - Liefert die Fehlermeldung des letzten Aufrufs von json_validate(),
   json_encode() oder json_decode()</span></li>
   </ul>
  </p>

 </div>

</div><?php manual_footer($setup); ?>