Home  >  Article  >  Backend Development  >  PHP JSON data processing example program usage_PHP tutorial

PHP JSON data processing example program usage_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:57:07767browse

The most common way to process JSON data in php is to directly use the json_encode() and json_decode() functions for processing. Next, I will introduce these two json processing functions to students in detail about the various uses of json in applications. Hope it helps everyone.

json_encode() ,PHP data->JSON

json_encode has only one parameter, and the parameter can be any data type except the resource type. But we usually pass in an array, as in the following example

The code is as follows Copy code
 代码如下 复制代码

$arr = array(
    "name" => "manson",
    "age" => 23,
    "sex" => 1
);
 
$json_str = json_encode($arr);
var_dump($json_str);

$arr = array(

"name" => "manson",

"age" => 23,

"sex" => 1
);

$json_str = json_encode($arr);

var_dump($json_str);

The result is a json string
 代码如下 复制代码
$arr = array(
    "name" => "张三",
    "age" => 23,
    "sex" => 1
);
 
$arr['name'] = iconv("gbk","utf-8",$arr['name']);
 
$json_str = json_encode($arr);

{"name":"manson","age":23,"sex":1}

At this time, the converted string is usually output to the front-end for processing, which is often used for data interaction with ajax, or data output from some front-end templates. One issue that needs to be paid attention to with json_encode is the Chinese encoding problem. If the encoding of the PHP page is non-utf-8, before json_encode, the part with Chinese content must be converted into utf-8 encoding, otherwise the output will be garbled when output to the front end. There are many solutions online. Here is a simple code conversion example
 代码如下 复制代码

$json_str = '{"name":"manson","age":23,"sex":1}';
 
$arr = json_decode($json_str,true);
var_dump($arr);


The code is as follows Copy code
$arr = array( "name" => "Zhang San",

"age" => 23,

"sex" => 1
 代码如下 复制代码
object(stdClass)#1 (3) {
  ["name"]=>
  string(6) "manson"
  ["age"]=>
  int(23)
  ["sex"]=>
  int(1)
}
); $arr['name'] = iconv("gbk","utf-8",$arr['name']); $json_str = json_encode($arr);
PHP data json_decode has two parameters. The first parameter is the json string to be decoded. The input must be a standard json format. In fact, json_decode is the reverse process of json_encode
The code is as follows Copy code
$json_str = '{"name":"manson","age":23,"sex":1}'; $arr = json_decode($json_str,true); var_dump($arr);
What needs to be noted here is that the second parameter of json_decode is passed true, which means that the array format will be returned after decoding. If false is passed or the second parameter is not passed, the object format will be returned after decoding. For example, the above code returns an object. The format is
The code is as follows Copy code
object(stdClass)#1 (3) { ["name"]=> string(6) "manson" ["age"]=> int(23) ["sex"]=> int(1) }

Compared with array format, object format will be more difficult to obtain corresponding data. Especially for multi-level data structures, it is better to convert it into array form. That is, remember to pass true for the second parameter of json_decode.

Process the submitted JSON data

POST method (pay attention to GET method too) submitted a JSON data to PHP, such as:

The code is as follows Copy code
 代码如下 复制代码

{"a":1,"b":2}

{"a":1,"b":2}

Get this data in PHP:
 代码如下 复制代码

$s=$_POST['data'] ;//or $_GET['data']

The code is as follows Copy code

$s=$_POST['data'] ;//or $_GET['data']

 代码如下 复制代码

 {"a":1,"b":2}

Then this string is escaped after being taken out:

The code is as follows Copy code
{"a":1,"b":2}

If calling directly:
 代码如下 复制代码

$obj = json_decode($s); 

print_r($obj); 
echo $obj->a;

The code is as follows Copy code
$obj = json_decode($s);

print_r($obj);

echo $obj->a;

 代码如下 复制代码

$s='{"a":1,"b":2}';

 代码如下 复制代码

$s=stripslashes($_POST['data']) ;

is wrong and an error will be reported.

If $s is defined directly:

The code is as follows Copy code
$s='{"a":1,"b":2}';


There is no problem.
 代码如下 复制代码
$handle = fopen("/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");
$content = "";
while (!feof($handle)) {
    $content .= fread($handle, 10000);
}
fclose($handle);
So when processing JSON in PHP, you need to perform some escaping:
The code is as follows Copy code
$s=stripslashes($_POST['data']) ;
Just do the json decoding in this way. PHP Get interface content Assume that the interface file page is: /api.php?action=open_getBlogList&only_recommend=1&limit=5, then we can use the following statement to obtain the content of this interface file:
The code is as follows Copy code
$handle = fopen("/api.php ?action=open_getBlogList&only_recommend=1&limit=5","rb"); $content = ""; while (!feof($handle)) { $content .= fread($handle, 10000); } fclose($handle);

In this way, content saves the JSON api content.

PHP parses JSON and displays it
The original content cannot be called directly and must be further processed by PHP before it can be called and displayed on the web page. In PHP 5.2 and later versions, use the json_decode() function to parse JSON data and convert it into a data format that PHP can call. For example:

 代码如下 复制代码
$content = json_decode($content);

After parsing, we can call the data in JSON in the same way as array data in PHP. This calling method needs to be written according to the specific JSON data format. Please see the demonstration below. Regarding the use of the json_decode function, please refer to the PHP manual for details. I will not go into details here: http://php.net/manual/en/function.json-decode.php

Practical API


Careful friends will find that there is a "Friendly Article Recommendation" module at the bottom of the sidebar of the Stalker m blog, which recommends some articles from Qiongtai Blog.

Friend article recommendation is a communication method between blogs initiated by Qiongtai Blog. It is more effective than traditional friend links and at the same time achieves complementary blog content. Since the blog program of Qiongtai Blog was written by himself, he provides a JSON API interface to obtain the latest recommended articles.

I use PHP to obtain this JSON interface, and then output it to the sidebar of my blog. Let’s do it in practice.

The first step is to check the api calling method


According to the documentation, I used parameters like /api.php?action=open_getBlogList&only_recommend=1&limit=5, which means calling five articles recommended by him.

The second step is to obtain the api structure data
It’s very simple. As mentioned above, the specific code is as follows:

The code is as follows
 代码如下 复制代码
$handle = fopen("/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb");
$content = "";
while (!feof($handle)) {
    $content .= fread($handle, 10000);
}
Copy code

$handle = fopen("/api.php ?action=open_getBlogList&only_recommend=1&limit=5","rb");

$content = "";
while (!feof($handle)) {

$content .= fread($handle, 10000);
 代码如下 复制代码

$content = json_decode($content);
foreach ($content->data as $key) {
    echo '

  • '.$key->b_title.'
  • ';
    }

    }

    fclose($handle); First open the data file, and then save all the contents to the content variable. Because you can be sure that the api data will not exceed 10000 characters, use 10000 as the second parameter of the fread function. In this way, the JSON data returned by the api is stored in the content variable.

    The third step is to parse and output the content

    Use the following code to parse the data and then call the output
    Statement:
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn