ホームページ > PHPフレームワーク > ThinkPHP > thinkphp5 で JSON メソッドを使用する方法について話しましょう

thinkphp5 で JSON メソッドを使用する方法について話しましょう

PHPz
リリース: 2023-04-07 14:08:47
オリジナル
2198 人が閲覧しました

Web アプリケーションの人気に伴い、AJAX テクノロジの使用はますます普及しています。 JSON (JavaScript Object Notation) は、フロントエンドとバックエンドのデータ対話を処理する際によく使用されるデータ形式です。 ThinkPHP5 フレームワークでは、JSON の操作は非常に簡単ですが、この記事では、ThinkPHP5 での JSON メソッドの使用方法を紹介します。

  1. Json 操作の概要

PHP で配列を JSON 形式のデータに変換するには、 json_encode 関数を使用するだけです。

$data = array('a' => 1, 'b' => 2, 'c' => 3);
echo json_encode($data); // {"a":1,"b":2,"c":3}
ログイン後にコピー

json_decode 関数を使用して、JSON 形式のデータを配列に変換できます:

$json_data = '{"a":1,"b":2,"c":3}';
$data = json_decode($json_data, true);
print_r($data); // Array ( [a] => 1 [b] => 2 [c] => 3 )
ログイン後にコピー

ThinkPHP5 フレームワークでは、JSON 操作がより簡単になり、フレームワークは簡単に処理できる Json クラスを提供します。 JSON データ。このクラスは think\response\Json.php にあります。

  1. Json クラスの使用法

Json クラスは、Response クラスから継承します。Response クラスは、応答クラスの抽象親クラスです。その主な機能は、クライアントへの返答。 Json クラスの主な機能は、データを JSON 形式でクライアントに返すことです。

Json インスタンスは次の方法で作成できます:

use think\response\Json;

$data = array('a' => 1, 'b' => 2, 'c' => 3);
$json = new Json($data);
ログイン後にコピー

または次の方法で作成できます:

$json = json($data);
ログイン後にコピー
  1. Json メソッドの紹介

Json クラスには JSON データを処理するためのメソッドが複数用意されていますので、以下でそれぞれ紹介していきます。

(1)dataメソッド

dataメソッドは、返却するデータを設定するために使用します。

$json = new Json();
$json->data($data);
ログイン後にコピー

Or:

$json->data($data)->code(200)->header(['Cache-control' => 'no-cache,must-revalidate'])->send();
ログイン後にコピー

(2) content メソッド

content メソッドは、返されるデータのタイプ (Content-Type タイプなど) を設定するために使用されます。アプリケーション/json。

$json = new Json();
$json->content('application/json');
ログイン後にコピー

(3) jsonp メソッド

jsonp メソッドは、JSONP データの生成に使用されます。2 つのパラメータを受け入れます。最初のパラメータはコールバック関数の名前で、2 番目のパラメータは値です返されるデータ。

$json = new Json();
$json->jsonp('callback', $data);
ログイン後にコピー

(4) code メソッド

code メソッドは、応答のステータス コードを設定するために使用されます。たとえば、200 は応答が成功したことを意味し、404 は要求されたリソースが存在しないことを意味します。 、など。

$json = new Json();
$json->code(200);
ログイン後にコピー

(5) headerメソッド

headerメソッドは、レスポンスヘッダ情報を設定するメソッドです。

$json = new Json();
$json->header(['Cache-control' => 'no-cache,must-revalidate']);
ログイン後にコピー

(6) options メソッド

options メソッドは、応答オプションを設定するために使用されます。

$json = new Json();
$json->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]);
ログイン後にコピー

(7) send メソッド

send メソッドは、応答データを送信するために使用されます。

$json = new Json($data);
$json->send();
ログイン後にコピー
  1. Json の例

例を通して Json クラスの使用方法を学びましょう。製品のリストを返すために JSON API が必要な場合、各製品には ID と名前という 2 つの属性があります。

最初はフロントエンド コードです:

$.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);
    }
});
ログイン後にコピー

次に、コントローラーにリスト関数を追加しますグッズ:

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;
    }
}
ログイン後にコピー

最後に、ルーティングにルールを追加します:

Route::get('/goods/list', 'index/Goods/list');
ログイン後にコピー

プログラムを実行し、パス /goods/list にアクセスして、返された JSON データを確認します。

この記事では、ThinkPHP5 フレームワークの Json クラスの基本的な使用法をいくつか紹介するだけであり、読者が自分で調べる必要があるより高度な使用法もあります。この記事が、ThinkPHP5 フレームワークの JSON 操作を理解するための参考になれば幸いです。

以上がthinkphp5 で JSON メソッドを使用する方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート