當前位置:首頁 » 編程語言 » php生成json

php生成json

發布時間: 2023-04-05 00:25:48

A. 如何在php中返回Json數據

概述

不對。

返回json用的json_encode()方法沒錯,但是需要在頭部聲明格式。

代碼解析

php返回需要用json_encode()方法來將需要轉換的字元串轉換成json編碼格式(注意:僅僅更換文件內容,而返回的文件依然為文本格式且編碼為gtk)

所以,這里需要在php頭部聲明

header('Content-Type:text/json;charset=utf-8');

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

json通常被作為配置文件,常見還有.ini

B. &符號轉json

一、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}

再看一個對象轉換的例子:

$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編碼的時候,這一點要特別注意。

二、索引數組和關聯數組

PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。

電腦技術002pc網認為此文章對《php & 轉換成&php json_encode與json_decode詳解及實例》說的很在理。

由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。

比如,現在有一個索引數組

$arr = Array('one', 'two', 'three');

echo json_encode($arr);

結果為:

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

如果將它改為關聯數組:

$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');

echo json_encode($arr);

結果就變了:

{"1":"one","2":"two","3":"three"}

注意,數據格式從"[]"(數組)變成了"{}"(對象)。

如果你需要將"索引數組"強制轉化成"對象",可以這樣寫

json_encode( (object)$arr );

或者

json_encode ( $arr, JSON_FORCE_OBJECT );

三、類(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),其他東西(常量、私有變數、方法等等)都遺失了。

四、json_decode()

該函數用於將json文本轉換為相應的PHP數據結構。下面是一個例子:

$json = '{"foo": 12345}';

$obj = json_decode($json);

print $obj->{'foo'}; // 12345

通常情況下,json_decode()總是返回一個PHP對象,而不是數組。比如:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_mp(json_decode($json));

結果就是生成一個PHP對象:

object(stdClass)#1 (5) {

["a"] => int(1)["b"] => int(2)["c"] => int(3)["d"] => int(4)["e"] => int(5)

}

如果想要強制生成PHP關聯數組,json_decode()需要加一個參數true:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_mp(json_decode($json,true));

結果就生成了一個關聯數組:

array(5) {

["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5)

}

五、json_decode()的常見錯誤

下面三種json寫法都是錯的,你能看出錯在哪裡嗎?

$bad_json = "{ 'bar': 'baz' }";

$bad_json = '{ bar: "baz" }';

$bad_json = '{ "bar": "baz", }';

更多:php & 轉換成&php json_encode與json_decode詳解及實例

https://www.002pc.comhttps://www.002pc.com/phpbiancheng/2916.html

你可能感興趣的json,decode,encode,php,詳解,實例

No alive nodes found in your cluster

C. PHP json數據寫入到json文件,讀取json文件

// 生成一個PHP數組

$data = array();

$data['name'] = 'admin';

$data['pwd'] = '123456';

// 把PHP數組轉成JSON字元串

$json_string = json_encode($data);

// 寫入文件

file_put_contents('user.json', $json_string);

// 從文件中讀取數據到PHP變數

$json_string = file_get_contents('user.json');

// 把JSON字元串轉成PHP數組

$data = json_decode($json_string, true);

// 顯示出來看看

var_mp($data)

D. 求PHP獲取JSON數據

PHP直接的旁備函數獲取或生核前成
用php生成json格式:json_encode('內容改啟清');
用php讀取json數據:json_deconde('json數據');

E. PHP生成多維數組的json格式

php中將數組格式換換為json格式可以使用 json_encode函數。

示例代碼如下:

<?php
//定義數組
$arr=array('city'=>array('北京','上海','廣州'),'order'=>array(1,2,3));

//將數組轉換為json格式
var_mp(json_encode($arr));

?>

json格式效果:

F. fastjson解析php生成的json報錯

你用PHP自帶的json解析函數json_encode();來解析

G. PHP怎麼生成去掉中括弧的JSON

字母索引的數組的是花括弧,數字索引是中括弧

所以你構造數組進行json_encode的時候 就不要做穗並這樣的東西

$data[0]=array("img"=>"xx"虛滲,"差族脊url"=>"xx");
$data[1]=array("img"=>"xx","url"=>"xx");
$xx=array("url_list"=>$data);
json_encode($xx);這樣就會生成中括弧的了。。

H. 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。

I. 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;

?>

(9)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); 回程

J. PHP生成json後咋去掉[]

JSON 格式的數嫌純據如果去掉 [ 的話可能芹嫌咐無法正常轉成數組了。

去除的話可以者仔用字元串替換函數:

$json;
$newJson=str_replace(['[',']'],['',''],$json);
echo$newJson;
熱點內容
配音秀緩存在手機哪裡 發布:2024-11-02 14:23:27 瀏覽:294
linux下載gcc 發布:2024-11-02 14:13:47 瀏覽:344
寫演算法交易 發布:2024-11-02 13:57:09 瀏覽:208
安卓怎麼下載鴻蒙 發布:2024-11-02 13:36:13 瀏覽:663
加密狗rsa 發布:2024-11-02 13:20:44 瀏覽:560
實用java教程 發布:2024-11-02 13:07:39 瀏覽:930
ide文件夾 發布:2024-11-02 12:51:37 瀏覽:559
python中字典的用法 發布:2024-11-02 12:40:42 瀏覽:28
安卓怎麼下載zine 發布:2024-11-02 12:40:38 瀏覽:793
深入理解java虛擬 發布:2024-11-02 12:40:36 瀏覽:557