導航:首頁 > 編程語言 > phpjsonencode引號

phpjsonencode引號

發布時間:2023-05-30 02:00:07

php獲取mysql帶中文的數據轉JSON後少了雙引號

請把相關代碼貼出來,我看你錯在哪裡

② 如何在PHP中解析json

目前,JSON已經成為最流行的數據交換格式之一,各大網站的API幾乎都支持它。
從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}

由於json只接受utf-8編碼的字元,所以json_encode()的參數必須是utf-8編碼,否則會得到空字元或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。

二、索引數組和關聯數組
PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。
由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。
比如,現在有一個索引數組
$arr = Array('one', 'two', 'three');
echo json_encode($arr);

結果為:

["one","two","three"]

三、類(class)的轉換
下面是一個PHP的類: class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
現在,對這個類的實例進行json轉換:

$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;

輸出結果是
{"public_ex":"this is public"}

可以看到,除了公開變數(public),其他東西(常量、私有變數、方法等等)都遺失了。

③ php生成的JSON,Key值為什麼沒有雙引號

到網上找的資料基本都是這個函數

[php] view plain
function ext_json_decode($str, $mode=false){
if(preg_match('/\w:/', $str)){
$str = preg_replace('/(\w+):/is', '"$1":', $str);
}
return json_decode($str, $mode);
}

這代碼從邏輯上本身就是錯誤的,比如value裡面有個:,解析自然出錯,下面是修正過後的

[php] view plain
function ext_json_decode($str, $mode=false){
$str = trim( $str );
$str = ltrim( $str, '(' );
$str = rtrim( $str, ')' );
$a = preg_split('#(?<!\\\\)\"#', $str );
for( $i=0; $i < count( $a ); $i+=2 ){
$s = $a[$i];
$s = preg_replace('#([^\s\{\}\:\,]+):#', '"\1":', $s );
$a[$i] = $s;
}
//var_mp($a);
$str = implode( '"', $a );
return json_decode($str, $mode);

④ PHP輸出json雙引號問題

就只有num一個欄位嗎,那可以自己轉換,例如:

$str='{"num":1000000000},{"num":1500000000},{"num":2100000000},{"num":"2262930400"}';//你可能是從資料庫獲得的
$aa=json_decode($str,true);

$str2='';
foreach($aaas$a)$str2.='{"num":'.$a['num'].'},';
$str2=substr($str2,0,strlen($str2)-1);
echo$str2;//轉換好了

⑤ 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雙引號前加上轉義符\

通過AJAX傳到PHP的json字元串有時候加上反斜杠」\」來轉義,PHP處理時需要先去掉反斜杠,然後再json_decode.

$str = stripslashes($_POST['json']);
$arr = json_decode($str,true);

PS:php get抓取json怎樣去除雙引號前面的反斜杠
你這個不算標準的JSON格式數據,可以先將\"替換成"即可。
再用敬姿局json_decode()系統函數將其轉為json對象,如需轉為數組加上第二個參數為true即可。
若仍輸出為NULL,是由於存在BOM頭信息,

復制代碼 代碼如下:

$arr = json_decode(trim($json,chr(239).chr(187).chr(191)),true);

轉換即可。
本文全部亮讓內容介紹完了,希望對大家在使冊稿用PHP去掉json字元串中的反斜杠\及去掉雙引號前的反斜杠中有所幫助。

⑦ php json中 數據有"雙引號怎麼辦

可以使用PHP addslashes() 函數轉義一下

addslashes() 函數在指定的預定義字元前添加反斜杠。

這些預定義字元是:

單引號 (')
雙引號 (")
反斜杠 (\)
NULL
例如:

<?php
$str = "Who's John Adams?";
echo $str . " This is not safe in a database query.<br />";
echo addslashes($str) . " This is safe in a database query.";
?>

輸出:
Who's John Adams? This is not safe in a database query.
Who\'s John Adams? This is safe in a database query.

⑧ json_encode在編碼字元串時會自動加上雙引號,怎麼能去掉

實際應用中,當有中文字元時,當顫灶直接使用json_encode() 函數脊信會使漢字編碼成」\u***」的形式,自從php5.4起 已經解決這個問題,使用以下方法茄野扮解決漢字被編碼的問題,json_encode("中文", JSON_UNESCAPED_UNICODE)[1]

⑨ php json_encode後的json裡面的int類型變成string類型

json_encode($data);
json_encode($data, JSON_NUMERIC_CHECK);
默認是加雙引號,即作為字元串雀帆擾輸出,加上參轎世數不加雙引頃旦號

閱讀全文

與phpjsonencode引號相關的資料

熱點內容
印度電影巴基斯坦女孩跑印度 瀏覽:750
反編譯文件加殼了 瀏覽:668
PDF使用版 瀏覽:211
網路設計pdf 瀏覽:921
程序員身體健康 瀏覽:844
混日子程序員35歲 瀏覽:898
winxp重啟命令 瀏覽:535
快絲傳輸命令 瀏覽:771
菲律賓電影男主發現自己家能看到樓下 瀏覽:79
有什麼app可以測試自己適合的發型 瀏覽:16
美國電影長不大的女孩殺人30多歲 瀏覽:485
ccs如何編譯程序 瀏覽:555
你最懂電影網址 瀏覽:895
5000部日本必看的電影免費 瀏覽:652
香港經典三圾電影網扯 瀏覽:180
島國主角叫邁克的電影黑人 瀏覽:105
內核模塊調用命令 瀏覽:264
晴雅集哪個平台看 瀏覽:593
鍾真和徐錦江拍過的電影有哪些 瀏覽:759
vim命令找行 瀏覽:188