Everyone should be familiar with JSON (JavaScript Object Notation), which is a lightweight data exchange format. Easy for humans to read and write. It is also easy for machines to parse and generate. It is based on JavaScript Programming Language, a subset of Standard ECMA-262 3rd Edition - December 1999. JSON uses a completely language-independent text format, but also uses conventions similar to the C language family (including C, C++, C#, Java, JavaScript, Perl, Python, etc.). These properties make JSON an ideal data exchange language.
JSON is constructed from two structures:
A collection of name/value pairs. In different languages, it is understood as an object, a record, a struct, a dictionary, a hash table, a keyed list, or an associative array. array). An ordered list of values. In most languages, it is understood as an array.
PHP’s serialize is to serialize variables and return a string expression with variable type and structure. Speaking of which, both embody a data structure in the form of a string, so there are What's the difference.
Let’s start with JSON and look at a simple example.
var test = {"Name":"Peter","Age":20}; document.write(test.Name + ": " + test.Age);
Display results:
Peter: 20
In the variable test, {"Name":"Peter","Age":20} is an object with 2 elements (it feels like an array in PHP): Name is Peter and Age is 20.
Of course it can get more complicated:
var test = {"User":{"Name":"Peter","Age":20},"Company":"FORD"}; document.write(test.User.Name + ": " + test.Company);
Display results:
Peter: FORD
In this example, the User element contains Name and Age.
If you want to reflect multiple Users, you need to use an array. Different from the "{}" of the object, the array uses "[]".
var test = [ {"User":{"Name":"Peter","Age":20},"Company":"FORD"}, {"User":{"Name":"Li Ming","Age":20},"Company":"Benz"} ]; document.write(test[1].User.Name + ": " + test[1].Company); //或者使用:document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"]);
Display results:
Li Ming: Benz
Through the above simple example, some complex data can be transferred through a string, and it is indeed much more convenient when combined with Ajax.
Let’s take a look at the role of PHP’s serialize function.
$arr = array ( 'Peter'=> array ( 'Country'=>'USA', 'Age'=>20 ), 'Li Ming'=> array ( 'Country'=>'CHINA', 'Age'=>21 ) ); $serialize_var = serialize($arr); echo $serialize_var;
Display results:
a:2:{s:5:"Peter";a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}s:7:"Li Ming";a:2:{s:7:"Country";s:5:"CHINA";s:3:"Age";i:21;}}
This result looks more complicated than JSON, but it is actually very simple. It describes some data types and structures.
Take a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;} as an example:
a:2 indicates that this is an array with two elements, s:7:"Country";s:3:"USA"; is the first element, s:7 indicates that there are 7 elements A string of characters, followed by i:20; it should also be guessed as an integer (integer) 20.
Look at this example again:
class test { var $var = 0; function add(){ echo $var+10; } } $unserialize_var = new test; $serialize_var = serialize($unserialize_var); echo $serialize_var; $unserialize_var = null; $unserialize_var = unserialize($serialize_var); $unserialize_var->add();
Display results:
O:4:"test":1:{s:3:"var";i:0;} 10
As can be seen from this example, serialize saves both the type and structure of the data, and the variables after unserialized can still use the add() method.
So are there any connection between PHP and JSON? Friends who are familiar with PHP should know that PHP5.2.0 has set JSON extension as the default component, which means that we can perform JSON operations in PHP, and its functions are json_encode and json_decode.
$arr = array ( 'Name'=>'Peter', 'Age'=>20 ); $jsonencode = json_encode($arr); echo $jsonencode;
Display results:
{"Name":"Peter","Age":20}
This result is the same as the test value in Example 1. Use json_encode to convert the variables in PHP into JSON characters and output the expression.
Let’s take a look at the usage of json_decode.
$var = '{"Name":"Peter","Age":20}'; $jsondecode = json_decode($var); print_r($jsondecode);
Display results:
stdClass Object ( [Name] => Peter [Age] => 20 )
This indeed verifies that {"Name":"Peter","Age":20} is an object in JSON, but it can also be converted to an array in PHP. In json_decode, set the ASSOC parameter to True is enough.
$var = '{"Name":"Peter","Age":20}'; $jsondecode = json_decode($var,true); print_r($jsondecode);
Display results:
Array ( [Name] => Peter [Age] => 20 )
In addition, it should be noted that JSON is based on Unicode format, so for Chinese operations, it must be converted into UTF-8 format.
Through the above examples, I believe everyone has a preliminary understanding of serialize and json_encode of JSON and PHP. By combining PHP, Javascript, JSON and Ajax, powerful data interaction functions can be completed.