json_encode Zwraca JSON reprezentujący wartość &reftitle.description; stringfalsejson_encode mixedvalue intflags0 intdepth512 Zwraca łańcuch JSON reprezentujący wartość, podaną w parametrze value. Jeżeli parametr jest tablicą lub obiektem, to będzie on zserializowany rekurencyjnie. Jeżeli wartość do zserializowania jest obiektem, to domyślnie będą uwzględnione tylko publiczne właściwości. Klasa może implementować interfejs JsonSerializable, aby kontrolować, w jaki sposób jej wartości będą serializowane do JSON. Na kodowanie mają wpływ flagi, przekazane w parametrze flags, ponadto kodowanie wartości zmiennoprzecinkowych jest zależne od wartości serialize_precision. &reftitle.parameters; value Wartość do zakodowania. Może być dowolnego typu poza zasobem. Wszystkie dane muszą być podane w formacie UTF-8. flags Maska bitowa składająca się z JSON_FORCE_OBJECT, JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_NUMERIC_CHECK, JSON_PARTIAL_OUTPUT_ON_ERROR, JSON_PRESERVE_ZERO_FRACTION, JSON_PRETTY_PRINT, JSON_UNESCAPED_LINE_TERMINATORS, JSON_UNESCAPED_SLASHES, JSON_UNESCAPED_UNICODE, JSON_THROW_ON_ERROR. Zachowanie tych stałych opisano na stronie stałe JSON. depth Określa maksymalne zagnieżdżenie. Musi być większe od zera. &reftitle.returnvalues; W przypadku powodzenia zwraca zakodowany &string; JSON&return.falseforfailure;. &reftitle.changelog; &Version; &Description; 7.3.0 Dodano flagę JSON_THROW_ON_ERROR. 7.2.0 Dodano flagi JSON_INVALID_UTF8_IGNORE i JSON_INVALID_UTF8_SUBSTITUTE. 7.1.0 Dodano flagę JSON_UNESCAPED_LINE_TERMINATORS. 7.1.0 Przy dekodowaniu wartości zmiennoprzecinkowych (&float;) używane jest ustawienie serialize_precision zamiast precision. &reftitle.examples; Przykład <function>json_encode</function> 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?> ]]> &example.outputs; Przykład <function>json_encode</function> pokazujący działanie niektórych flag ',"'bar'",'"baz"','&blong&', "\xc3\xa9"); echo "Standardowo: ", json_encode($a), "\n"; echo "Znaczniki: ", json_encode($a,JSON_HEX_TAG), "\n"; echo "Apostrofy: ", json_encode($a,JSON_HEX_APOS), "\n"; echo "Cudzysłowy: ", json_encode($a,JSON_HEX_QUOT), "\n"; echo "Znaki et (etki): ", json_encode($a,JSON_HEX_AMP), "\n"; echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n"; echo "Wszystkie opcje: ", json_encode($a,JSON_HEX_TAG|JSON_HEX_APOS|JSON_HEX_QUOT|JSON_HEX_AMP), "\n\n"; $b = array(); echo "Pusta tablica zwracana jako tablica: ", json_encode($b), "\n"; echo "Pusta tablica zwracana jako obiekt: ", json_encode($b, JSON_FORCE_OBJECT), "\n\n"; $c = array(array(1,2,3)); echo "Nieasocjacyjna tablica zwracana jako tablica: ", json_encode($c), "\n"; echo "Nieasocjacyjna tablica zwracana jako obiekt: ", json_encode($c, JSON_FORCE_OBJECT), "\n\n"; $d = array('foo' => 'bar', 'baz' => 'long'); echo "Asocjacyjna tablica zwracana zawsze jako obiekt: ", json_encode($d), "\n"; echo "Asocjacyjna tablica zwracana zawsze jako obiekt: ", json_encode($d, JSON_FORCE_OBJECT), "\n\n"; ?> ]]> &example.outputs; ","'bar'","\"baz\"","&blong&","\u00e9"] Znaczniki: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"] Apostrofy: ["","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"] Cudzysłowy: ["","'bar'","\u0022baz\u0022","&blong&","\u00e9"] Znaki et (etki): ["","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"] Unicode: ["","'bar'","\"baz\"","&blong&","é"] Wszystkie opcje: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","é"] Pusta tablica zwracana jako tablica: [] Pusta tablica zwracana jako obiekt: {} Nieasocjacyjna tablica zwracana jako tablica: [[1,2,3]] Nieasocjacyjna tablica zwracana jako obiekt: {"0":{"0":1,"1":2,"2":3}} Asocjacyjna tablica zwracana zawsze jako obiekt: {"foo":"bar","baz":"long"} Asocjacyjna tablica zwracana zawsze jako obiekt: {"foo":"bar","baz":"long"} ]]> Przykład użycia opcji JSON_NUMERIC_CHECK ]]> &example.outputs.similar; string(7) "+123123" [1]=> string(7) "-123123" [2]=> string(5) "1.2e3" [3]=> string(7) "0.00001" } string(28) "[123123,-123123,1200,1.0e-5]" Łańcuchy znaków zawierające niepoprawnie sformatowane liczby array(2) { [0]=> string(13) "+a33123456789" [1]=> string(4) "a123" } string(24) "["+a33123456789","a123"]" ]]> Tablica sekwencyjna vs. niesekwencyjna "foo", 2=>"bar", 3=>"baz", 4=>"blong"); var_dump( $nonsequential, json_encode($nonsequential) ); echo PHP_EOL."Tablica sekwencyjna z usuniętym jednym kluczem".PHP_EOL; unset($sequential[1]); var_dump( $sequential, json_encode($sequential) ); ?> ]]> &example.outputs; string(3) "foo" [1]=> string(3) "bar" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(27) "["foo","bar","baz","blong"]" Tablica niesekwencyjna array(4) { [1]=> string(3) "foo" [2]=> string(3) "bar" [3]=> string(3) "baz" [4]=> string(5) "blong" } string(43) "{"1":"foo","2":"bar","3":"baz","4":"blong"}" Tablica sekwencyjna z usuniętym jednym kluczem array(3) { [0]=> string(3) "foo" [2]=> string(3) "baz" [3]=> string(5) "blong" } string(33) "{"0":"foo","2":"baz","3":"blong"}" ]]> Przykład użycia opcji <constant>JSON_PRESERVE_ZERO_FRACTION</constant> ]]> &example.outputs; &reftitle.notes; W przypadku wystąpienia błędu kodowania, funkcja json_last_error może być użyta do dokładnego określenia rodzaju błędu. W przypadku kodowania tablicy, której indeksy nie są kolejnymi liczbami zaczynającymi się od zera 0, wszystkie klucze zapisywane są jako łańcuchy znaków i określone dokładnie dla każdej pary klucz-wartość. Tak jak referencyjna funkcja kodująca JSON, json_encode wygeneruje JSON, który jest typem prostym (czyli nie jest obiektem ani tablicą), jeżeli podano typy &string;, &integer;, &float; lub &boolean; jako wejście w value. Mimo że większość dekoderów traktuje te wartości jak poprawny JSON, niektóre mogą tego nie robić, ponieważ specyfikacja jest niejednoznaczna w tej kwestii. Podsumowując, zawsze sprawdzaj, czy Twój dekoder JSON radzi sobie z wyjściem, które generujesz przez json_encode. &reftitle.seealso; JsonSerializable json_decode json_last_error json_last_error_msg serialize