json在php有何應用? (程式碼範例)
這篇文章帶給大家的內容是關於json在php中有何應用? (程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用於編碼,後者用於解碼。
一、json_encode()
此函數主要用來將陣列和對象,轉換為json格式。先看一個陣列轉換的例子:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr);
結果是:{"a":1,"b":2,"c":3,"d":4,"e":5}<span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"><span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"> <span class="token string"><span class="token punctuation"><span class="token number"><span class="token punctuation"></span></span></span> </span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
##再看一個物件轉換的例子:
$obj->body = 'another post'; $obj->id = 21; $obj->approved = true; $obj->favorite_count = 1; $obj->status = NULL; echo json_encode($obj);
結果為:{"body":"another post","id":21,"approved":true,"favorite_count":1,"status":null}
由於json只接受utf-8編碼的字符,所以json_encode()的參數必須是utf-8編碼,否則會得到空字符或null。當中文使用GB2312編碼,或外文使用ISO-8859-1編碼的時候,這一點要特別注意。二、索引數組和關聯數組<span class="token punctuation"><span class="token string"><span class="token punctuation">PHP支援兩個數組,一個是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。 <span class="token string"><span class="token punctuation">由於javascript不支援關聯數組,所以<span class="token string">json_encode()只將索引數組(indexed array)轉換成數組格式,而將關聯數組(associative array)轉為物件格式。 <span class="token punctuation"><span class="token string"><span class="token punctuation">例如,現在有一個索引數組<span class="token string"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'> $arr = array(&#39;one&#39;,&#39;two&#39;,&#39;three&#39;);
echo json_encode($arr);</pre><div class="contentsignin">登入後複製</div></div><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>结果为:["one","two","three"] </pre><div class="contentsignin">登入後複製</div></div><span class="token punctuation">如果將它改為關聯數組:<span class="token string"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'> $arr = Array(&#39;1&#39;=>&#39;one&#39;, &#39;2&#39;=>&#39;two&#39;, &#39;3&#39;=>&#39;three&#39;);
echo json_encode($arr);</pre><div class="contentsignin">登入後複製</div></div><span class="token punctuation">結果就變了:{"1":"one ","2":"two","3":"three"}</span></span></span></span></span></span></span></span></span></span></span> </span></span>
#
#注意,資料格式從"[]"(陣列)變成了"{}"(物件)。
如果你需要將"索引數組"強制轉換成"物件"<span class="token punctuation">,可以這樣寫:<span class="token string"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'> json_encode( (object)$arr );</pre><div class="contentsignin">登入後複製</div></div><span class="token punctuation">或:<span class="token string"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'> json_encode ( $arr, JSON_FORCE_OBJECT );</pre><div class="contentsignin">登入後複製</div></div><span class="token punctuation"> </span>三、類別(class)的轉換</span></span></span>下面是一個PHP的類別:</span><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>class Foo {
const ERROR_CODE = &#39;404&#39;;
public $public_ex = &#39;this is public&#39;;
private $private_ex = &#39;this is private!&#39;;
protected $protected_ex = &#39;this should be protected&#39;;
public function getErrorCode() {
return self::ERROR_CODE;
}
}</pre><div class="contentsignin">登入後複製</div></div>
現在,對這個類別的實例進行json轉換:<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'> $foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;</pre><div class="contentsignin">登入後複製</div></div><span class="token punctuation">輸出結果是:{"public_ex":"this is public"}<span class="token string"><span class="token punctuation"><span class="token string"><span class="token punctuation"></span></span># </span></span></span>
可以看到,
除了公開變數(public),其他東西(常數、私有變數、方法等等)都遺失了。四、json_decode()
此函數用於將json文字轉換為對應的PHP資料結構。下面是一個例子:$json = '{"foo": 12345}';
$obj = json_decode($json);
print $obj->{'foo'}; // 12345
例如:
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
結果就是產生一個PHP物件:object(stdClass)[2]
public 'a' => int 1
public 'b' => int 2
public 'c' => int 3
public 'd' => int 4
public 'e' => int 5
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json,true));
array (size=5) 'a' => int 1 'b' => int 2 'c' => int 3 'd' => int 4 'e' => int 5
$bad_json = "{ 'bar': 'baz' }"; $bad_json = '{ bar: "baz" }'; $bad_json = '{ "bar": "baz", }';
第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。
第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。
第三个的错误是,最后一个值之后不能添加逗号(trailing comma)。
另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。
var_dump(json_decode("Hello World")); //null
以上是json在php有何應用? (程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Gson@Expose註解可用於標記欄位是否公開(包含或不包含)以進行序列化或反序列化。 @Expose註解可以採用兩個參數,每個參數都是一個布林值,可以採用值true或false。為了讓GSON對@Expose註解做出反應,我們必須使用GsonBuilder類別建立一個Gson實例,並且需要呼叫excludeFieldsWithoutExposeAnnotation()方法,它將Gson配置為排除所有沒有Expose註解的欄位進行序列化或反序列化。語法publicGsonBuilderexclud

golangWebSocket與JSON的結合:實現資料傳輸和解析在現代的Web開發中,即時資料傳輸變得越來越重要。 WebSocket是一種用於實現雙向通訊的協議,與傳統的HTTP請求-回應模型不同,WebSocket允許伺服器向客戶端主動推送資料。而JSON(JavaScriptObjectNotation)是一種用於資料交換的輕量級格式,它簡潔易讀

PHP數組轉JSON的效能最佳化方法包括:使用JSON擴充和json_encode()函數;新增JSON_UNESCAPED_UNICODE選項以避免字元轉義;使用緩衝區提高循環編碼效能;快取JSON編碼結果;考慮使用第三方JSON編碼庫。

MySQL5.7和MySQL8.0是兩個不同的MySQL資料庫版本,它們之間有以下一些主要差異:效能改進:MySQL8.0相對於MySQL5.7有一些效能改進。其中包括更好的查詢優化器、更有效率的查詢執行計劃產生、更好的索引演算法和平行查詢等。這些改進可以提高查詢效能和整體系統效能。 JSON支援:MySQL8.0引入了對JSON資料類型的原生支持,包括JSON資料的儲存、查詢和索引。這使得在MySQL中處理和操作JSON資料變得更加方便和有效率。事務特性:MySQL8.0引進了一些新的事務特性,如原子

使用golang中的json.MarshalIndent函數將結構體轉換為格式化的JSON字串在使用Golang編寫程式時,我們經常需要將結構體轉換為JSON字串,在這個過程中,json.MarshalIndent函數可以幫助我們實現格式化的輸出。下面我們將詳細介紹如何使用這個函數,並提供具體的程式碼範例。首先,讓我們建立一個包含一些資料的結構體。以下是示

C#開發中如何處理XML和JSON資料格式,需要具體程式碼範例在現代軟體開發中,XML和JSON是廣泛應用的兩種資料格式。 XML(可擴展標記語言)是一種用於儲存和傳輸資料的標記語言,而JSON(JavaScript物件表示)是一種輕量級的資料交換格式。在C#開發中,我們經常需要處理和操作XML和JSON數據,本文將重點放在如何使用C#處理這兩種數據格式,並附上

使用PHP的json_encode()函數將陣列或物件轉換為JSON字串並格式化輸出,可以讓資料在不同的平台和語言之間進行傳遞和交換變得更加容易。本文將介紹json_encode()函數的基本用法,以及如何將JSON字串格式化輸出。一、json_encode()函數的基本用法json_encode()函數的基本語法如下:stringjson_encod

Jackson庫中的註解可控制JSON序列化和反序列化:序列化:@JsonIgnore:忽略屬性@JsonProperty:指定名稱@JsonGetter:使用獲取方法@JsonSetter:使用設定方法反序列化:@JsonIgnoreProperties:忽略屬性@ JsonProperty:指定名稱@JsonCreator:使用建構子@JsonDeserialize:自訂邏輯
