Maison  >  Article  >  cadre php  >  Parlons de la façon d'utiliser la méthode JSON dans thinkphp5

Parlons de la façon d'utiliser la méthode JSON dans thinkphp5

PHPz
PHPzoriginal
2023-04-07 09:24:592122parcourir

Avec la popularité des applications web, l'utilisation de la technologie AJAX est de plus en plus répandue. JSON (JavaScript Object Notation) est un format de données populaire pour traiter l'interaction des données front-end et back-end. Dans le framework ThinkPHP5, les opérations JSON sont très simples. Cet article explique comment utiliser la méthode JSON dans ThinkPHP5.

  1. Introduction aux opérations Json

En PHP, pour convertir un tableau en données au format JSON, il vous suffit d'utiliser la fonction json_encode.

$data = array('a' => 1, 'b' => 2, 'c' => 3);
echo json_encode($data); // {"a":1,"b":2,"c":3}

Vous pouvez convertir les données au format JSON en tableau via la fonction json_decode :

$json_data = '{"a":1,"b":2,"c":3}';
$data = json_decode($json_data, true);
print_r($data); // Array ( [a] => 1 [b] => 2 [c] => 3 )

Dans le framework ThinkPHP5, les opérations JSON sont plus simples. Le framework fournit une classe Json qui peut facilement traiter les données JSON. php.

  1. Utilisation de la classe Json

La classe Json hérite de la classe Response. La classe Response est une classe parent abstraite de la classe Response. Sa fonction principale est de renvoyer la réponse au client. La fonction principale de la classe Json est de renvoyer des données au client au format JSON.

Nous pouvons créer une instance Json de la manière suivante :

use think\response\Json;

$data = array('a' => 1, 'b' => 2, 'c' => 3);
$json = new Json($data);

ou la créer de la manière suivante :

$json = json($data);
  1. Introduction à la méthode Json

La classe Json fournit plusieurs méthodes pour traiter les données JSON. Présentons chacune d'elles ci-dessous. .

(1) méthode data

la méthode data est utilisée pour définir les données à renvoyer.

$json = new Json();
$json->data($data);

Ou :

$json->data($data)->code(200)->header(['Cache-control' => 'no-cache,must-revalidate'])->send();

(2) méthode content

La méthode content est utilisée pour définir le type de données à renvoyer, comme le type Content-Type d'application/json.

$json = new Json();
$json->content('application/json');

(3) méthode jsonp

La méthode jsonp est utilisée pour générer des données JSONP. Elle accepte deux paramètres. Le premier paramètre est le nom de la fonction de rappel et le deuxième paramètre est les données à renvoyer.

$json = new Json();
$json->jsonp('callback', $data);

(4) méthode code

la méthode code est utilisée pour définir le code d'état de la réponse, tel que 200 représentant une réponse réussie, 404 représentant que la ressource demandée n'existe pas, etc.

$json = new Json();
$json->code(200);

(5) méthode d'en-tête

la méthode d'en-tête est utilisée pour définir les informations d'en-tête de réponse.

$json = new Json();
$json->header(['Cache-control' => 'no-cache,must-revalidate']);

(6) méthodes d'options

la méthode d'options est utilisée pour définir les options de réponse.

$json = new Json();
$json->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]);

(7) méthode d'envoi

la méthode d'envoi est utilisée pour envoyer des données de réponse.

$json = new Json($data);
$json->send();
  1. Exemple Json

Apprenons à utiliser la classe Json à travers un exemple. Supposons que nous ayons besoin d'une API JSON pour renvoyer une liste de produits. Chaque produit a deux attributs : ID et nom.

D'abord le code front-end :

$.ajax({
    url: '/goods/list',
    dataType: 'jsonp',
    jsonp: 'callback',
    success: function(data) {
        if (data.code == 200) {
            $.each(data.data, function(index, item) {
                $('#goods-list').append('<li>' + item.id + ': ' + item.name + '</li>');
            });
        } else {
            alert('加载商品列表失败:' + data.msg);
        }
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert('加载商品列表失败:' + textStatus);
    }
});

Ensuite, ajoutez une fonction de liste dans le contrôleur Goods :

namespace app\index\controller;

use think\response\Json;

class Goods
{
    public function list()
    {
        // 模拟商品数据
        $goods_list = array(
            array('id' => 1, 'name' => '商品1'),
            array('id' => 2, 'name' => '商品2'),
            array('id' => 3, 'name' => '商品3'),
        );

        // 返回JSON数据
        $json = json($goods_list);
        $jsonp_callback = input('get.callback');
        if (!empty($jsonp_callback)) {
            $json->jsonp($jsonp_callback);
        }
        return $json;
    }
}

Enfin, ajoutez une règle dans le routage :

Route::get('/goods/list', 'index/Goods/list');

Exécutez le programme et accédez au chemin /goods/list pour voir les données JSON de retour.

Cet article présente uniquement quelques méthodes d'utilisation de base de la classe Json dans le framework ThinkPHP5. Il existe des utilisations plus avancées que les lecteurs doivent explorer par eux-mêmes. J'espère que cet article pourra fournir une référence permettant à chacun de comprendre le fonctionnement JSON du framework ThinkPHP5.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn