導航:首頁 > 編程語言 > php字元串轉化為json

php字元串轉化為json

發布時間:2023-03-03 01:06:12

❶ 如何在php中正確的使用json

將json字元串解析成對象:

$json='{"a":1,"b":2}';
$obj=json_decode($json);
echo$obj->a;//1
echo$obj->b;//2

將對象轉為json字元串

echojson_encode(array('a'=>1,'b'=>2));//{"a":1,"b":2}

❷ php怎麼將數組數組轉化為json格式的數據

一、json_encode()

[php]view plain

❸ php如何輸出中文json格式字元串

php如何輸出中文json格式字元串
如何對json格式的字元串進行轉換,php提供了兩個函數:
json_encode 對變數進行 JSON 編碼
json_decode 對 JSON 格式的字元串進行編碼

下面看個實例:
$arr = ['a', 'b', 'c'];echo json_encode($arr);

輸出為:
["a","b","c"]

但是,當我們在數組中放入中文的時候,就會出現問題:
$arr = [ '世界', '你好',
];echo json_encode($arr);

輸出的結果為:
["\u4e16\u754c","\u4f60\u597d"]

這個結果顯然不是我們想要的,但是為什麼出現這個呢?
因為當我們的值中包含中文時,php對他進行json編碼時底層會對中文進行unicode編碼,導致結果不可讀,那該怎麼解決呢?
方法一
可以利用 urlencode 和 urldecode 方法繞過這個轉碼為 unicode 的過程,先將中文欄位進行urlencode,然後json_encode,最後再用urldecode處理結果,便可以正常顯示中文。具體代碼如下:
$arr = [ '世界', '你好',
];echo urldecode(json_encode(array_map('urlencode', $arr)));

輸出結果為:
["世界","你好"]

方法二
自PHP5.4版本,官方就已經給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項後,就不會自動把中文編碼了。具體代碼如下:
$arr = [ '世界', '你好',
];echo json_encode($arr, JSON_UNESCAPED_UNICODE);
["世界","你好"]

看吧,這才是我們想要的結果 :)

❹ php 轉json 加引號

請輸入你的答案當我們在結合php和javascript實現某些功能時,經常會用到json。json是js的一種數據格式,可以直接被js解析。而php無法直接讀取json數據,但是php提供了json_decode函數來對json數據進行轉化,從而可以被php腳本訪問。同時,php也提供了json_encode函數來將數據轉化成json格式。那麼,js中的原生json與php中通過json_encode函數轉化後的json是否完全一樣呢?今天,站長就和大家一起來探討這個問題。我們通過php向javascript傳遞數組數據時,通常要將其轉化為json格式,一遍javascript來獲取,那麼我們就以數組為例,先來看一下兩者之間的區別。1、一維數組考慮php數組$array=array("1","2","3");使用json_encode函數轉化後,對應的json字元串為["1","2","3"]。細心的朋友很快就發現,轉化後得到的json字元串,就是javascript中的數組形式,那麼是否可以用js的數組訪問方式來訪問呢?當然是可以的,但是你將這個json字元串傳遞給給js時,需要使用urlencode函數對其編碼,如:')"id="aj">訪問json我們可以用下面的js代碼來驗證:functionshow(str){varjobj=eval_r(decodeURI(str));alert(jobj[2]);}大家自己試一試就會發現,是的,可以用js中訪問一維數組的方式來訪問它。eval方法將json字元串解釋為json對象,因為傳遞過來的是字元串,不轉化的話,你得到將是字元串中第三個字元的值。我們再來對這個一維數組做一下變化,我們發現上面的一維數組沒有指定索引,所以它默認為數字索引,現在我們來給它加上鍵名:考慮php數組$array=array('a'=>'1','b'=>'2','c'=>'3');使用json_encode函數轉化後,對應的json字元串為{"a":"1","b":"2","c":"3"}。我們很快就發現了其中的不同,最明顯的就是字元串兩端的[]變成了{},那麼這個字元串是否也可以按上面那樣處理後被js訪問呢?我們不防試一試:'1','b'=>'2','c'=>'3')));?>')"id="aj">訪問jsonfunctionshow(str){varjobj=eval_r(decodeURI(str));alert(jobj.a);}大家如果動手試了就知道,點擊鏈接後,沒有出現彈窗。為什麼呢?是PHP生成的json字元串格式不對嗎?不是的,這是我們在使用eval函數解釋的時候,出錯了。把上面的函數代碼換成:functionshow(str){varjobj=eval_r('('+decodeURI(str)+')');alert(jobj.a);}再試試吧!怎麼樣,可以訪問了吧。這告訴我們,在使用eval方法處理帶有鍵名的json字元串時,需要在字元串兩端加速括弧。至於為什麼,站長也不知道,站在巨人的肩膀上而已。這里要注意,盡管PHP生成的json字元串{"a":"1","b":"2","c":"3"}被傳遞給js後無法被直接解釋為json格式,但是如果你在js中使用該字元串直接創建json數據,是可以的。試試下面的代碼吧:varjobj={"a":"1","b":"2","c":"3"};alert(jobj.b);2、二維數組二維數組在PHP用的應用非常廣泛,因此了解二維數組轉化後的json格式非常重要。有了上面的例子做鋪墊,下面站長就直接給出示例代碼:')"id="aj">訪問jsonfunctionshow(str){varjobj=eval_r(decodeURI(str));alert(jobj[0][0]);}大家運行,會發現,這跟一維數組差不多,這是不帶鍵名的例子,因此在show函數中,去掉字元串兩端的括弧也是可以的。下面,我們對二維數組進行一下變化,在第二維中加入鍵名,請看示例代碼:'1',"b"=>'2','3'))));?>')"id="aj">訪問jsonfunctionshow(str){varjobj=eval_r('('+decodeURI(str)+')');alert(jobj[0].a);}大家運行代碼後,發現,這里我們訪問json數據的方式有點不一樣。上面我們用的是alert(jobj[0][0]);而這里我們用的是alert(jobj[0].a);不要問我為什麼,就是這樣。這就是json的訪問方式。上面的例子,我們對二維數組的第二維添加了鍵名,下面我們對第一維添加鍵名,看看訪問方式又有什麼不同:array('1','2','3'))));?>')"id="aj">訪問jsonfunctionshow(str){varjobj=eval_r('('+decodeURI(str)+')');alert(jobj.k[1]);}這里我們使用的是jobj.k[1]這樣的方式,大家一定已經發現了,只要數組中含有鍵名,當數組被轉化為json格式後,就要使用json對象.鍵名這樣的方式來訪問該鍵下的元素,上面的例子中,k鍵下的數組元素是數字索引,所以在json中使用k[1]這樣的方式來訪問。下面,我們對數組的第一維和第二維都添加鍵名:array("a"=>'1','2','3'))));?>')"id="aj">訪問jsonfunctionshow(str){varjobj=eval_r('('+decodeURI(str)+')');alert(jobj.k.a);}正如上面所提到的,只要含有鍵名,就必須以json對象.鍵名的方式來訪問,如果有多個鍵就要用json對象.鍵名.鍵名,不要問我為什麼,這就是json的訪問方式,只有javascript的發明者能向你解釋,他為什麼要這樣規定。結論:1、將php中的數組轉化為json字元串傳遞給js時。如果數組沒有指定鍵名,那麼可以直接使用js的eval方法將其轉化為json格式供js處理;如果數組中含有鍵名,那麼在使用eval方法處理時,需要使用()將json字元串括起來。2、如果數組中含有鍵名,轉化為json字元串後,在js中要用json對象.鍵名.鍵名的方式來訪問,如果是數字索引則用json對象[1]或者json對象.鍵名[1]這樣的方式。上面,我們主要討論了,在PHP向js傳遞json字元串時,需要注意的事項。下面我們再來討論,用js向php傳遞json字元串時需要如何處理。聰明的你肯定已經知道了,只要將json數據用引號引起來作為字元串傳遞給PHP【通常用ajax進行】就可以用json_decode函數解碼了。沒錯!就是這樣!但是在構造json字元串的時候一定要仔細,如果你不經常構造json字元串,那麼不妨用echojson_encode(array('k'=>array("a"=>'1','2','3')))這樣的方式,查看你需要構造的目標字元串的json格式。這樣你就可以在js中根據你想要的結果來構造了!好了,今天對php和js之間如何使用json數據進行通信就討論到這里,大家可以自己再試試將php的對象類型進行json編碼後如何傳遞給js。

❺ php如何返回json對象呢

返回json用的json_encode()方法沒錯,但是需要在頭部聲明格式。
代碼解析
php返回需要用json_encode()方法來將需要轉換的字元串轉換成json編碼格式(注意:僅僅更換文件內容,而返回的文件依然為文本格式且編碼為gtk)
所以,這里需要在php頭部聲明
header('Content-Type:text/json;charset=utf-8');

拓展內容
json
JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。它基於 ECMAScript (歐洲計算機協會制定的js規范)的一個子集,採用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網路傳輸效率。
json通常被作為配置文件,常見還有.ini
0

❻ PHP怎麼把多個數組揉成一個json字元串

<?php

//創建數組

$array = array(

"name" => "Hza",

"age" => 21

);

//數組轉化為json格式

echo json_encode($array);

echo "<br />";

//創建類

class Student {

public $name;

public $age;

//初始化是賦值

function __construct($name, $age)

{

$this->name = $name;

$this->age = $age;

}

//魔術方法 把對象轉換成字元串格式 以備使用json_encode()函數

function __tostring() {

//對象轉化為json格式

return json_encode($this,JSON_FORCE_OBJECT);

}

}

//實例化對象

$person1 = new Student('Hza', 20);

//輸出json格式

echo $person1;

?>

(6)php字元串轉化為json擴展閱讀:

json六個構造字元:

begin-array = ws %x5B ws ; [ 左方括弧

begin-object = ws %x7B ws ; { 左大括弧

end-array = ws %x5D ws ; ] 右方括弧

end-object = ws %x7D ws ; } 右大括弧

name-separator = ws %x3A ws ; : 冒號

value-separator = ws %x2C ws ; , 逗號

在這六個構造字元的前或後允許存在無意義的空白符(ws):

ws = *(%x20 /; 空間

%x09 /; 水平標簽

%x0A /; 換行或換行

%x0D); 回程

❼ php怎麼json數據轉化為字元串

json數據本身就是一個字元串。

如果說轉換,只是說,php數組和json字元串之間的轉化,在這里給你介紹php操作json的兩個函數

  1. json_decode()對 JSON 格式的字元串進行編碼
    說明
    mixed json_decode ( string $json [, bool $assoc ] )
    接受一個 JSON 格式的字元串並且把它轉換為 PHP 變數

    參數
    json
    待解碼的 json string 格式的字元串。
    assoc
    當該參數為 TRUE 時,將返回 array 而非 object 。


    返回值
    Returns an object or if the optional assoc parameter is TRUE, an associative array is instead returned.

  2. json_encode — 對變數進行 JSON 編碼

    Report a bug 說明
    string json_encode ( mixed $value [, int $options = 0 ] )
    返回 value 值的 JSON 形式

    Report a bug 參數

    value
    待編碼的 value ,除了resource 類型之外,可以為任何數據類型

    該函數只能接受 UTF-8 編碼的數據

❽ PHP 二維索引數組怎麼轉化成json字元串數組

json_encode()就是將PHP數組轉換成Json

如:$array = array("name" => "Eric","age" => 23); echo json_encode($array);

程序將列印出 : {「name」:」Eric」,」age」:23}

閱讀全文

與php字元串轉化為json相關的資料

熱點內容
怎麼變字體樣式app 瀏覽:173
名字叫湯什麼的視頻app 瀏覽:207
金屬加密鍵盤聯系電話 瀏覽:333
自製解壓牛奶盒子教程 瀏覽:62
編譯高手的圖片 瀏覽:922
單片機數碼管顯示時分秒 瀏覽:780
手指解壓最簡單的方法 瀏覽:343
韓國郵箱伺服器地址 瀏覽:967
android版本介紹 瀏覽:410
pdf文件加密軟體 瀏覽:410
長沙住房app怎麼看備案 瀏覽:601
安裝加密軟體的電腦會被監控么 瀏覽:221
java微博源碼 瀏覽:569
堆排序簡單實現python 瀏覽:461
單片機引腳與鍵盤的關系 瀏覽:132
壓縮火柴盒製作 瀏覽:38
谷歌地圖android偏移 瀏覽:214
bitlocker硬碟加密空間 瀏覽:238
程序員鼓勵師可以上嗎 瀏覽:447
文件夾占內存卻找不到了 瀏覽:786