欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP 實(shí)現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作詳解

 更新時(shí)間:2020年04月22日 10:49:46   作者:Ryan_zheng  
這篇文章主要介紹了PHP 實(shí)現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作,結(jié)合實(shí)例形式詳細(xì)分析了PHP操作json格式數(shù)據(jù)編碼、解碼函數(shù)使用場景及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP 實(shí)現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作。分享給大家供大家參考,具體如下:

JSON 的使用場景:

  1. 數(shù)據(jù)表一個(gè)字段需要記錄多個(gè)信息,如記錄關(guān)于用戶的其他信息
  2. 數(shù)據(jù)傳輸,如:API接口返回值、Ajax中實(shí)現(xiàn)異步加載
  3. 配置文件,如 composer.json 包管理配置文件

在 PHP 中使用 JSON:

JSON 使用最頻繁的兩個(gè)操作就是編碼和解析數(shù)據(jù),PHP 官方提供了以下 2 個(gè)函數(shù)實(shí)現(xiàn)這兩個(gè)操作:

  1. json_encode()
  2. json_decode()

Encoding and Decoding

編碼用于將數(shù)據(jù)綁定到特定格式。需要此過程來保持?jǐn)?shù)據(jù)一致性。解碼是一個(gè)反向過程,它將編碼的數(shù)據(jù)還原回其原始形式。

PHP JSON Encode

使用 json_encode 將 PHP 的一些數(shù)據(jù)類型轉(zhuǎn)換為 JSON 格式,函數(shù)包含 3 個(gè)參數(shù),分別為:

  • 將要編碼的數(shù)據(jù)
  • 帶有 JSON encode 常量的選項(xiàng)可以反映對編碼行為的影響
  • 編碼的深度限制

PHP 中預(yù)定義的 JSON 常量

JSON_FORCE_OBJECT
JSON_HEX_QUOT
JSON_HEX_TAG
JSON_HEX_AMP
JSON_HEX_APOS
JSON_INVALID_UTF8_IGNORE
JSON_INVALID_UTF8_SUBSTITUTE
JSON_NUMERIC_CHECK
JSON_PARTIAL_OUTPUT_ON_ERROR
JSON_PRESERVE_ZERO_FRACTION
JSON_PRETTY_PRINT
JSON_UNESCAPED_LINE_TERMINATORS
JSON_UNESCAPED_SLASHES
JSON_UNESCAPED_UNICODE
JSON_THROW_ON_ERROR

Example: PHP json_encode()

<?php
$input_array = array("zero","one","two");
//returns ["zero","one","two"] 

$str_json_format = json_encode($input_array);
print "JSON Formatted String:" . $str_json_format;
//returns {"0":"zero","1":"one","2":"two"}

$obj_json_format = json_encode($input_array, JSON_FORCE_OBJECT);
print "<br/><br/>JSON Object:" . $obj_json_format;
//returns [ "zero", "one", "two" ]

$strJsonFormat_with_space = json_encode($input_array, JSON_PRETTY_PRINT);
print "<br/><br/>JSON Formatted String with white space:" . $strJsonFormat_with_space;

PHP JSON Decode

這是 JSON encode 的反向操作,用于將 JSON 編碼的數(shù)據(jù)轉(zhuǎn)換為最初編碼的 PHP數(shù)據(jù)類型。

json_decode 函數(shù)包含 4 個(gè)參數(shù),分別為:

  • 將要解析的 JSON 字符串
  • 當(dāng)該參數(shù)為 TRUE 時(shí),將返回 array 而非 object
  • 指定遞歸深度
  • JSON 常量
    JSON_BIGINT_AS_STRING, JSON_INVALID_UTF8_IGNORE, JSON_INVALID_UTF8_SUBSTITUTE, JSON_OBJECT_AS_ARRAY, JSON_THROW_ON_ERROR

返回值:

返回值為 TRUE, FALSENULL
如果 json 無法被解碼, 或者編碼數(shù)據(jù)深度超過了遞歸限制的話,將會返回NULL

Example: PHP json_encode()

<?php
$str_json_array_decoded = json_decode($str_json_format);
print "<br/><br/>Resultant decoded array from JSON array:<br/>";
print "<PRE>";
print_r($str_json_array_decoded);
print "</PRE>";

$str_objJson_decoded = json_decode($obj_json_format);
print "<br/><br/>Resultant decoded object data from JSON object:<br/>";
print "<PRE>";
print_r($str_objJson_decoded);
print "</PRE>";

$str_jsonAry_decoded = json_decode($obj_json_format,true);
print "<br/><br/>Resultant decoded array data from JSON object:<br/>";
print "<PRE>";
print_r($str_jsonAry_decoded);
print "</PRE>";

注意:

  1. PHP 可以將任意數(shù)據(jù)類型轉(zhuǎn)換為 JSON 格式,除了 resource data
  2. JSON 解碼時(shí),必須先去除掉字符串中的反斜杠 "\",不然會導(dǎo)致解析失敗,可以使用 stripslashes 對字符串進(jìn)行處理后,再使用 json_decode 解析

如果需要解碼的 JSON 數(shù)據(jù)中包含有反斜杠 "\",應(yīng)該使用如下代碼進(jìn)行解碼:

$obj = \json_decode(stripslashes($json));

PS:這里再為大家推薦幾款比較實(shí)用的json在線工具供大家參考使用:

在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.jb51.net/code/json

JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat

在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson

json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.jb51.net/code/jsoncodeformat

C語言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
http://tools.jb51.net/code/ccode_html_css_json

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP中json格式數(shù)據(jù)操作技巧匯總》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 詳解PHP中的外觀模式facade pattern

    詳解PHP中的外觀模式facade pattern

    這篇文章主要介紹了詳解PHP中的外觀模式facade pattern的詳細(xì)用法以及代碼實(shí)例,對此有需求的朋友參考下吧。
    2018-02-02
  • PHP學(xué)習(xí)筆記之字符串編碼的轉(zhuǎn)換和判斷

    PHP學(xué)習(xí)筆記之字符串編碼的轉(zhuǎn)換和判斷

    GBK 和 UTF-8 編碼的轉(zhuǎn)換是一個(gè)非常惡心的事情,比如像 PHP 中的 json_encode 本身根本不支持 GBK 形式的編碼。有兩個(gè)庫函數(shù)能夠支持編碼的轉(zhuǎn)換,通常能夠想到的就是 iconv 函數(shù),使用起來也非常爽:
    2014-05-05
  • PHP函數(shù)import_request_variables()用法分析

    PHP函數(shù)import_request_variables()用法分析

    這篇文章主要介紹了PHP函數(shù)import_request_variables()用法,結(jié)合實(shí)例形式分析了import_request_variables函數(shù)的功能,定義及相關(guān)使用技巧,需要的朋友可以參考下
    2016-04-04
  • 推薦十款免費(fèi) WordPress 插件

    推薦十款免費(fèi) WordPress 插件

    本文給大家介紹的是今年必備的10款WordPress插件,非常的實(shí)用,包含WordPress SEO By Yoast,Akismet,W3 Total Cache,Disqus Comment System,Google Sitemap Generator,Jetpack,Limit Login Attempts,Contact Form 7,Yet Another Related Posts Plugin等
    2015-03-03
  • php中的一些數(shù)組排序方法分享

    php中的一些數(shù)組排序方法分享

    php中的一些數(shù)組排序方法分享,需要的朋友可以參考下
    2012-07-07
  • php中l(wèi)trim()、rtrim()與trim()刪除字符空格實(shí)例

    php中l(wèi)trim()、rtrim()與trim()刪除字符空格實(shí)例

    這篇文章主要介紹了php中l(wèi)trim()、rtrim()與trim()刪除字符空格的方法.以實(shí)例形式分別講述了ltrim()、rtrim()與trim()的具體用法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解

    php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解

    這篇文章主要介紹了php設(shè)計(jì)模式之策略模式,結(jié)合具體應(yīng)用案例形式詳細(xì)分析了php策略模式的原理、定義、實(shí)現(xiàn)方法及項(xiàng)目應(yīng)用案例與操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • 淺談php安全性需要注意的幾點(diǎn)事項(xiàng)

    淺談php安全性需要注意的幾點(diǎn)事項(xiàng)

    這段時(shí)間一直在寫一個(gè)整站,前幾天才基本完成了,所以抽個(gè)時(shí)間寫了一篇對于php安全的總結(jié)。技術(shù)含量不高,過不了也沒關(guān)系,希望能一些準(zhǔn)備寫網(wǎng)站的朋友一點(diǎn)引導(dǎo)。
    2014-07-07
  • 關(guān)于IIS php調(diào)用com組件的權(quán)限問題

    關(guān)于IIS php調(diào)用com組件的權(quán)限問題

    Word的對象庫文件“MSWORD.OLB”(word 2000為MSWORD9.OLB)(這是針對老版本的情況,在用vs.net2005的時(shí)候,直接在引用對話框中,在com組件里找到對word的庫文件的引用就可以了,文件名好像是一樣的
    2012-01-01
  • php樹型類實(shí)例

    php樹型類實(shí)例

    這篇文章主要介紹了php樹型類,涉及數(shù)據(jù)結(jié)構(gòu)與算法中的樹結(jié)構(gòu),實(shí)例相對簡單易懂,對于學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2014-12-12

最新評論