json_encode

(PHP 5 >= 5.2.0, PHP 7, PECL json >= 1.2.0)

json_encode锟皆憋拷锟斤拷锟斤拷锟斤拷 JSON 锟斤拷锟斤拷

说锟斤拷

json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] ) : string

锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 value 值 JSON 锟斤拷式锟侥憋拷示锟斤拷

锟斤拷锟斤拷锟杰达拷锟斤拷锟� options 锟斤拷锟斤拷影锟届,锟斤拷锟解浮锟斤拷值锟侥憋拷锟斤拷锟斤拷锟斤拷锟斤拷 serialize_precision锟斤拷

锟斤拷锟斤拷

value

锟斤拷锟斤拷锟斤拷锟� value 锟斤拷锟斤拷锟斤拷resource 锟斤拷锟斤拷之锟解,锟斤拷锟斤拷为锟轿猴拷锟斤拷锟斤拷锟斤拷锟酵★拷

锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟捷的憋拷锟斤拷锟斤拷锟斤拷锟� UTF-8锟斤拷

Note:

PHP implements a superset of JSON as specified in the original » RFC 7159.

options

锟斤拷锟斤拷锟铰筹拷锟斤拷锟斤拷傻亩锟斤拷锟斤拷锟斤拷锟斤拷耄� JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR锟斤拷 锟斤拷锟斤拷 JSON 锟斤拷锟斤拷锟斤拷锟斤拷慰锟�JSON 锟斤拷锟斤拷页锟芥。

depth

锟斤拷锟斤拷锟斤拷锟斤拷锟饺★拷 锟斤拷锟斤拷锟斤拷锟�0锟斤拷

锟斤拷锟斤拷值

锟缴癸拷锟津返伙拷 JSON 锟斤拷锟斤拷锟� string 锟斤拷锟斤拷锟斤拷失锟斤拷时锟斤拷锟斤拷 FALSE 锟斤拷

锟斤拷锟斤拷锟斤拷志

锟芥本 说锟斤拷
7.1.0 锟斤拷 Double 锟斤拷值锟斤拷锟叫憋拷锟斤拷时锟斤拷使锟斤拷 serialize_precision 锟斤拷锟斤拷 precision锟斤拷
5.6.6 options 锟斤拷锟斤拷锟斤拷锟接筹拷锟斤拷锟斤拷 JSON_PRESERVE_ZERO_FRACTION
5.5.0 锟斤拷锟斤拷 depth 锟斤拷锟斤拷锟斤拷
5.5.0 锟斤拷锟斤拷锟斤拷 JSON_PARTIAL_OUTPUT_ON_ERROR 选锟筋。
5.5.0 失锟斤拷时锟斤拷锟截碉拷值锟斤拷 null 锟街凤拷锟斤拷锟侥筹拷 FALSE锟斤拷
5.4.0 options 锟斤拷锟斤拷锟斤拷锟接筹拷锟斤拷锟斤拷 JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 锟斤拷 JSON_UNESCAPED_UNICODE锟斤拷
5.3.3 options 锟斤拷锟斤拷锟斤拷锟接筹拷锟斤拷锟斤拷JSON_NUMERIC_CHECK锟斤拷
5.3.0 锟斤拷锟斤拷 options 锟斤拷锟斤拷.

锟斤拷锟斤拷

Example #1 json_encode() 锟斤拷锟斤拷

<?php
$arr 
= array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo 
json_encode($arr);
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

{"a":1,"b":2,"c":3,"d":4,"e":5}

Example #2 json_encode() 锟斤拷锟斤拷锟斤拷 options 锟斤拷锟斤拷锟斤拷锟矫凤拷

<?php
$a 
= array('<foo>',"'bar'",'"baz"','&blong&'"\xc3\xa9");

echo 
"Normal: ",  json_encode($a), "\n";
echo 
"Tags: ",    json_encode($aJSON_HEX_TAG), "\n";
echo 
"Apos: ",    json_encode($aJSON_HEX_APOS), "\n";
echo 
"Quot: ",    json_encode($aJSON_HEX_QUOT), "\n";
echo 
"Amp: ",     json_encode($aJSON_HEX_AMP), "\n";
echo 
"Unicode: "json_encode($aJSON_UNESCAPED_UNICODE), "\n";
echo 
"All: ",     json_encode($aJSON_HEX_TAG JSON_HEX_APOS JSON_HEX_QUOT JSON_HEX_AMP JSON_UNESCAPED_UNICODE), "\n\n";

$b = array();

echo 
"Empty array output as array: "json_encode($b), "\n";
echo 
"Empty array output as object: "json_encode($bJSON_FORCE_OBJECT), "\n\n";

$c = array(array(1,2,3));

echo 
"Non-associative array output as array: "json_encode($c), "\n";
echo 
"Non-associative array output as object: "json_encode($cJSON_FORCE_OBJECT), "\n\n";

$d = array('foo' => 'bar''baz' => 'long');

echo 
"Associative array always output as object: "json_encode($d), "\n";
echo 
"Associative array always output as object: "json_encode($dJSON_FORCE_OBJECT), "\n\n";
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

Normal: ["<foo>","'bar'","\"baz\"","&blong&","\u00e9"]
Tags: ["\u003Cfoo\u003E","'bar'","\"baz\"","&blong&","\u00e9"]
Apos: ["<foo>","\u0027bar\u0027","\"baz\"","&blong&","\u00e9"]
Quot: ["<foo>","'bar'","\u0022baz\u0022","&blong&","\u00e9"]
Amp: ["<foo>","'bar'","\"baz\"","\u0026blong\u0026","\u00e9"]
Unicode: ["<foo>","'bar'","\"baz\"","&blong&","锟斤拷"]
All: ["\u003Cfoo\u003E","\u0027bar\u0027","\u0022baz\u0022","\u0026blong\u0026","锟斤拷"]

Empty array output as array: []
Empty array output as object: {}

Non-associative array output as array: [[1,2,3]]
Non-associative array output as object: {"0":{"0":1,"1":2,"2":3}}

Associative array always output as object: {"foo":"bar","baz":"long"}
Associative array always output as object: {"foo":"bar","baz":"long"}

Example #3 选锟斤拷 JSON_NUMERIC_CHECK 锟斤拷锟斤拷

<?php
echo "Strings representing numbers automatically turned into numbers".PHP_EOL;
$numbers = array('+123123''-123123''1.2e3''0.00001');
var_dump(
 
$numbers,
 
json_encode($numbersJSON_NUMERIC_CHECK)
);
echo 
"Strings containing improperly formatted numbers".PHP_EOL;
$strings = array('+a33123456789''a123');
var_dump(
 
$strings,
 
json_encode($stringsJSON_NUMERIC_CHECK)
);
?>

锟斤拷锟斤拷锟斤拷锟教碉拷锟斤拷锟斤拷锟斤拷锟斤拷冢锟�

Strings representing numbers automatically turned into numbers
array(4) {
  [0]=>
  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]"
Strings containing improperly formatted numbers
array(2) {
  [0]=>
  string(13) "+a33123456789"
  [1]=>
  string(4) "a123"
}
string(24) "["+a33123456789","a123"]"

Example #4 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞撅拷锟�

<?php
echo "锟斤拷锟斤拷锟斤拷锟斤拷".PHP_EOL;
$sequential = array("foo""bar""baz""blong");
var_dump(
 
$sequential,
 
json_encode($sequential)
);

echo 
PHP_EOL."锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷".PHP_EOL;
$nonsequential = array(1=>"foo"2=>"bar"3=>"baz"4=>"blong");
var_dump(
 
$nonsequential,
 
json_encode($nonsequential)
);

echo 
PHP_EOL."删锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷值锟侥凤拷式锟斤拷锟斤拷锟侥凤拷锟斤拷锟斤拷锟斤拷锟斤拷".PHP_EOL;
unset(
$sequential[1]);
var_dump(
 
$sequential,
 
json_encode($sequential)
);
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

锟斤拷锟斤拷锟斤拷锟斤拷
array(4) {
  [0]=>
  string(3) "foo"
  [1]=>
  string(3) "bar"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(27) "["foo","bar","baz","blong"]"

锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷
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"}"

删锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷值锟侥凤拷式锟斤拷锟斤拷锟侥凤拷锟斤拷锟斤拷锟斤拷锟斤拷
array(3) {
  [0]=>
  string(3) "foo"
  [2]=>
  string(3) "baz"
  [3]=>
  string(5) "blong"
}
string(33) "{"0":"foo","2":"baz","3":"blong"}"

Example #5 选锟斤拷 JSON_PRESERVE_ZERO_FRACTION 锟斤拷锟斤拷锟斤拷

<?php
var_dump
(json_encode(12.0JSON_PRESERVE_ZERO_FRACTION));
var_dump(json_encode(12.0));
?>

锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�

string(4) "12.0"
string(2) "12"

注锟斤拷

Note:

锟斤拷锟街达拷锟绞э拷埽锟斤拷锟斤拷锟酵拷锟� json_last_error() 锟斤拷锟斤拷锟斤拷锟斤拷取锟斤拷细锟斤拷锟斤拷锟斤拷息锟斤拷

Note:

锟斤拷锟揭拷锟斤拷锟斤拷锟斤拷锟斤拷募锟斤拷锟斤拷谴锟�0锟斤拷始锟斤拷锟斤拷锟街o拷锟斤拷锟叫的硷拷锟斤拷锟结被锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷锟斤拷确锟斤拷锟斤拷为 key-value 锟皆★拷

Note:

Like the reference JSON encoder, json_encode() will generate JSON that is a simple value (that is, neither an object nor an array) if given a string, integer, float or boolean as an input value. While most decoders will accept these values as valid JSON, some may not, as the specification is ambiguous on this point.

锟杰讹拷锟斤拷之锟斤拷应锟矫诧拷锟斤拷锟斤拷 JSON decoder 锟杰凤拷锟斤拷 json_encode() 锟斤拷锟缴碉拷锟斤拷锟捷★拷

锟轿硷拷

  • JsonSerializable
  • json_decode() - 锟斤拷 JSON 锟斤拷式锟斤拷锟街凤拷锟斤拷锟斤拷锟叫斤拷锟斤拷
  • json_last_error() - 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷拇锟斤拷锟�
  • serialize() - 锟斤拷锟斤拷一锟斤拷锟缴存储锟斤拷值锟侥憋拷示