php json_decode()和json_encode()使用示例

内容摘要
这篇文章主要为大家详细介绍了php json_decode()和json_encode()使用示例,具有一定的参考价值,可以用来参考一下。

对php中json_decode()和json_encode()的使用方法对此感兴
文章正文

这篇文章主要为大家详细介绍了php json_decode()和json_encode()使用示例,具有一定的参考价值,可以用来参考一下。

对php中json_decode()和json_encode()的使用方法对此感兴趣的朋友,看看idc笔记做的技术笔记!json_decode对JSON格式的字符串进行编码而json_encode对变量进行 JSON 编码,需要的朋友可以参考下 1.json_decode()json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0)json_decode — 对 JSON 格式的字符串进行编码说明 mixed json_decode ( string $json [, bool $assoc ] ) 接受一个 JSON 格式的字符串并且把它转换为 PHP 变量参数json 待解码的 json string 格式的字符串。assoc 当该参数为 TRUE 时,将返回 array 而非 object 。返回值Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.范例Example #1 json_decode() 的例子

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
<?php 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 
?>
/***   来自php教程(www.idcnote.com)   ***/
上例将输出:
object(stdClass)#1 (5) {["a"] => int(1)["b"] => int(2)["c"] => int(3)["d"] => int(4)["e"] => int(5)}array(5) {["a"] => int(1)["b"] => int(2)["c"] => int(3)["d"] => int(4)["e"] => int(5)}
代码如下:

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
$data='[{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""},{"Name":"a1","Number":"123","Contno":"000","QQNo":""}]'; 
echo json_decode($data);
/***   来自php教程(www.idcnote.com)   ***/
代码如下:
Array ( [0] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => stdClass Object ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )
可以看出经过json_decode()编译出来的是对象,现在输出json_decode($data,true)试下 代码如下:

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
echo json_decode($data,true);
/***   来自php教程(www.idcnote.com)   ***/
结果: 代码如下:
Array ( [0] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [1] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) [2] => Array ( [Name] => a1 [Number] => 123 [Contno] => 000 [QQNo] => ) )
可以看出 json_decode($data,true)输出的一个关联数组,由此可知json_decode($data)输出的是对象,而json_decode("$arr",true)是把它强制生成PHP关联数组.2.json_encode()json_encode (PHP 5 >= 5.2.0, PECL json >= 1.2.0)json_encode — 对变量进行 JSON 编码Report a bug 说明 string json_encode ( mixed $value [, int $options = 0 ] ) 返回 value 值的 JSON 形式Report a bug 参数value 待编码的 value ,除了resource 类型之外,可以为任何数据类型该函数只能接受 UTF-8 编码的数据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_UNESCAPED_UNICODE.Report a bug 返回值 编码成功则返回一个以 JSON 形式表示的 string 或者在失败时返回 FALSE 。Report a bug 更新日志 版本 说明 5.4.0 options 参数增加常量: JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, 和 JSON_UNESCAPED_UNICODE。 5.3.3 options 参数增加常量:JSON_NUMERIC_CHECK。 5.3.0 增加 options 参数.Report a bug 范例Example #1 A json_encode() 的例子

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
<?php 
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr); 
?>
/***   来自php教程(www.idcnote.com)   ***/
以上例程会输出:

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
{"a":1,"b":2,"c":3,"d":4,"e":5}
/***   来自php教程(www.idcnote.com)   ***/
Example #2 json_encode() 函数中 options 参数的用法

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
<?php 
$a = array('<foo>',"'bar'",'"baz"','&blong&', "\xc3\xa9");
echo "Normal: ", json_encode($a), "\n"; 
echo "Tags: ", json_encode($a, JSON_HEX_TAG), "\n"; 
echo "Apos: ", json_encode($a, JSON_HEX_APOS), "\n"; 
echo "Quot: ", json_encode($a, JSON_HEX_QUOT), "\n"; 
echo "Amp: ", json_encode($a, JSON_HEX_AMP), "\n"; 
echo "Unicode: ", json_encode($a, JSON_UNESCAPED_UNICODE), "\n"; 
echo "All: ", json_encode($a, JSON_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($b, JSON_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($c, JSON_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($d, JSON_FORCE_OBJECT), "\n\n"; 
?>
/***   来自php教程(www.idcnote.com)   ***/
以上例程会输出:
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 连续与非连续数组示例

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
<?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) 
); 
?>
/***   来自php教程(www.idcnote.com)   ***/
以上例程会输出:连续数组
array(4) {[0]=>string(3) "foo"[1]=>string(3) "bar"[2]=>string(3) "baz"[3]=>string(5) "blong"}string(27) "["foo","bar","baz","blong"]"
非连续数组

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
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"}"
/***   来自php教程(www.idcnote.com)   ***/
删除一个连续数组值的方式产生的非连续数组

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
array(3) { 
[0]=> 
string(3) "foo" 
[2]=> 
string(3) "baz" 
[3]=> 
string(5) "blong" 
} 
string(33) "{"0":"foo","2":"baz","3":"blong"}"
/***   来自php教程(www.idcnote.com)   ***/
复制代码 代码如下:

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
$obj->Name= 'a1';$obj->Number ='123'; 
$obj->Contno= '000'; 
echo json_encode($obj);
/***   来自php教程(www.idcnote.com)   ***/
结果为: 复制代码 代码如下:

/**
* php中json_decode()和json_encode()的使用方法
*
* @param 
* @arrange 512-笔记网: 512PiC.com
**/
{"Name":"a1", 
"Number":"123", 
"Contno":"000" 
}
/***   来自php教程(www.idcnote.com)   ***/
可以看出json_encode()和json_decode()是编译和反编译过程,注意json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。

注:关于php json_decode()和json_encode()使用示例的内容就先介绍到这里,更多相关文章的可以留意

代码注释

作者:喵哥笔记

IDC笔记

学的不仅是技术,更是梦想!