使用PHP处理JSON使用PHP处理JSON数据

首先

你好。我是一名正在某个学校学习编程等内容的服务器端程序员。这次我要谈的是我作为程序员的起源之一的PHP。

这次我们总结了有关处理JSON的内容,如标题所示。

JSON 是什么?

你可能知道,一葉念简称为JSON,它是一种用于在JavaScript处理中描述对象的数据格式。

可以将数据描述得像XML一样简洁且结构化,这可以说是最易于理解的格式。

JSON格式由“键值对”组成,支持多种编程语言,所以只要准备一个JSON格式的数据,就可以与其他语言共同使用。

json_encode是什么

要将给定的值转换为JSON格式,可以使用json_encode函数。

json_encode関数は以下のように記述します。

書き方: 
string json_encode( $値 [, JSON定数 [, 深さ = 512 ]] )

引数: 
第一引数にはJSON形式に変換するための文字列や配列を指定します。
第二引数を指定した場合は、どのような形式で変換するか、オプションで定数を指定することができます。

返り値:
json_encode関数は、戻り値にJSONエンコードされた値を返し、処理が失敗した場合はFALSEを返します。

请确保所有要转换的字符串数据都已经被编码为UTF-8字符编码。

json_encode的使用方法

//配列を作成
$fruits_array = ['apple'=>'fruits1',
                 'orange'=>'fruits2',
                 'melon'=>'fruits3',
                 'pineapple'=>'fruits4'
                ];

//配列をJSON形式に変換
$jsonstr =  json_encode($fruits_array);

echo $jsonstr;
{"apple":"fruits1","orange":"fruits2","melon":"fruits3","pineapple":"fruits4"}

如果在第二个参数中指定JSON_UNESCAPED_UNICODE,则可以处理日语。

json_decode是什么?

要接收以JSON格式编码的字符串并进行解码,可以使用json_decode函数。

解码是指将经过编码的数据恢复为原始数据的过程。

json_decode関数は、以下のように記述します。

書き方:
json_decode ( string $JSON文字列 [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

引数:
第一引数にはデコード対象のJSON文字列を指定します、以降の引数は各種オプションを指定します。

assoc:TRUEの場合は連想配列の形式で返されます。
depth:ユーザー指定の再帰の深さを指定します。
options:JSONデコードオプションのビットマスクを指定します。

返り値:
JSONエンコードされたデータを、適切なPHPの型として返します。

デコードを失敗したり、再起制限を超えている場合はNULLを返します。

使用 json_decode 的方法

//配列を作成
$fruits_array = ['apple'=>'fruits1',
                 'orange'=>'fruits2',
                 'melon'=>'fruits3',
                 'pineapple'=>'fruits4'
                ];

//配列をJSON形式に変換
$jsonstr =  json_encode($fruits_array);

//JSON形式を元に戻す
$fruits = json_decode($jsonstr, true);

print_r($fruits);
Array
(
    [apple] => fruits1
    [orange] => fruits2
    [melon] => fruits3
    [pineapple] => fruits4
)

小贴士

当以 Content-Type: application/json 形式发送请求时,由于缺少 key=value,因此 $_POST 变量自然为空。为此,我们尝试直接访问流,使用 php://input 的 fopen 包装器来访问 HTTP 请求正文。

<?php
$json_string = file_get_contents('php://input'); //今回のキモ

echo $json_string;
$obj = json_decode($json_string);
var_dump($obj);

新增于2018年11月22日

示例代码

将从Android手机等智能手机发送(POST)的数据(姓名、评论)保存到数据库,并作为响应返回注册完成消息和注册日期时间。

<?php
$dsn="mysql:dbname=db_name;host=host_name;charset=utf8";
$user="unknown";
$pass="******";


$name = $_POST["name"];
$coment = $_POST["coment"];

$created = date('Y-m-d H:i:s');

$status = true;

$msg = "";
if(strlen($name) == 0) {
    $msg += "名前が未入力です\n";

}

if(strlen($coment) == 0) {
    $msg += "コメントが未入力です\n";
}

try{
    $pdo=new PDO($dsn,$user,$pass);
    $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
    $sql = "insert into table_name (name, coment, created) value (:name, :coment, ;created)";
    $stmt=$pdo->prepare($sqlInsert);
    $result=$stmt->execute(array(
                             ":name" => $name,
                             ":coment" => $coment,
                             ":created" => $created
                           ));
    $msg += "登録完了";     

}catch(PDOException $e){
    $msg += "登録失敗";
    $status = false;
} finally {
   $pdo = null;
}

$returnArray["created"] = $created;
$returnArray["msg"] = $msg;
$returnArray["status"] = $status;


$json = json_encode($returnArray);
header("Content-Type: application/json; charset=utf-8”);
print($json);

概括一下

简而言之,重要的是将值填入数组returnArray,然后对其进行json_encode处理!

最后

处理JSON也很简单呢w

如果有任何错误或需要指正,请您联系我。感谢您阅读到最后。

广告
将在 10 秒后关闭
bannerAds