回覆列表
  • 1 # 牙醬
    根據個人理解PHP接收json資料有三種:獲取json格式的請求引數;獲取json檔案中的資料;獲取介面返回的寄送資料。下面將一一講述:1、獲取請求引數

    $input = file_get_contents("php://input");

    $input = json_decode($input,true);

    var_dump($input);

    2、獲取檔案中的json

    $jsonStr = file_get_contents("src/xx.json");

    $jsonObj = json_decode($jsonStr, true);

    3、獲取介面返回的json(以post請求為例)

    function run_curl_json($url, $data, $timeout) {

    $data = json_encode($data);

    $ch = curl_init($url); //請求的URL地址

    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");

    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", "Content-Length: " . strlen($data)));

    $ret = curl_exec($ch);

    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    curl_close($ch);

    $jsonObj = json_decode($ret, true);

    return ["data" => $jsonObj, "code" => $httpCode];

    }

    以上三種方式中獲取到的都是json字串,然後透過json_decode將json字串轉為陣列。

  • 2 # 程式設計師小助手

    引言

    前幾篇文章我們講了表單資料的接收,驗證等功能。也說到了傳送的陣列如何處理, 今天我們說一下如果傳送的資料是JSON格式,其處理流程。

    學習時間

    如果知道傳入的資料是JSON格式,作為新手可能會直接從輸入獲取,這些組織程式碼:

    $json = file_get_contents("php://input");

    $data = json_decode($json,true);

    解析為關聯陣列,輸出內容大概如下:

    [ { "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" } ]

    前端請求資料時,可以採用純手動組裝JSON字串,然後整體提交的方式:

    $.ajax({

    type: "POST",

    url: "/people",

    data: "[{ "name": "John", "location": "Boston" }, { "name": "Dave", "location": "Lancaster" }]",

    contentType: "json",

    success:function(data) { // code }

    });

    這裡是使用jquery的ajax方法發起請求。data 沒有使用object物件傳輸資料, 而是一個整體的字串。所以在接收的時候使用了原生的PHP方法。

    這個做法很原始,也非常不靈活。其實接收請求引數的時候,我們可以使用laravel提供的 request 物件進行操作, 比如這樣接收:

    $data = json_decode($request->getContent(), true);

    其中 getContent 方法返回的就是原始的提交資料的字串內容。

    或者我們對於post請求的資料,使用 Request 的 json 方法,將其進行json化,這將返回一個 ParameterBag 物件。 再將其格式化為陣列即可:

    $data = $request->json()->all();

    寫在最後

    本文介紹了laravel格式化網路請求的json格式資料的方式。 知識點很小,但是很實用,希望大家能夠熟練掌握。

    Happy coding :-)

  • 中秋節和大豐收的關聯?
  • 蜂蜜的作用與功效是什麼?