php json格式互轉
php原生提供 json_encode($str)和json_decode($str)。
1.json_encode()
此函式是將php的array和object轉換成json格式。
eg:array
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
result:{"a":1,"b":2,"c":3,"d":4,"e":5}
eg:object
$obj->body = 'another post';
$obj->id = 21;
result: {
"body":"another post",
"id":21,
}
二、索引陣列和關聯陣列
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"]
如果將它改為關聯陣列:
$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_dump(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_dump(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", }';
對這三個字串執行json_decode()都將返回null,並且報錯。
第一個的錯誤是,json的分隔符(delimiter)只允許使用雙引號,不能使用單引號。第二個的錯誤是,json名值對的"名"(冒號左邊的部分),任何情況下都必須使用雙引號。第三個的錯誤是,最後一個值之後不能新增逗號(trailing comma)。
另外,json只能用來表示物件(object)和陣列(array),如果對一個字串或數值使用json_decode(),將會返回null。
var_dump(json_decode("Hello World")); //null
相關推薦
php json格式互轉
php原生提供 json_encode($str)和json_decode($str)。 1.json_encode() 此函式是將php的array和object轉換成json格式。 eg:array $arr = array ('a'=>1,'b'=>2
SAP中ABAP格式與JSON格式互轉方法研究
一、JSON概念JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。JSON資料格式示例: { "學生": [ {"姓名":"小明","年齡":23}, {"姓名":"大憨","年齡":2
ABAP-JSON資料格式互轉
1 *&---------------------------------------------------------------------* 2 *& Report ZRICO_TEST32_JSON 3 *& 4 *&--------------
js數字貨幣格式互轉
返回 oat tof UNC == bsp fun fixed brush //將1,234,567.00轉換為1234567.00 function moneyToNumValue(val) { var num = val.trim();
dlib中的image和opencv中的image格式互轉
//dlib::array2d is an image already, you can use it for any dlib's image functions //load image: dlib::array2d<dlib::rgb_pixe
properties和yaml線上格式互轉
分享一個線上properties 與yml格式互轉工具。 域名非常簡單好記,地址:http://toyaml.com/ Spring Boot 整個應用程式只有一個配置檔案,那就是 .properties 或 .yml 檔案。因 Spring Boot 對每個配置項都有預設值。所以也可不配置。當然,我們也
影象RGB2YUV與YUV2RGB格式互轉介紹
1 YUV格式與RGB格式說明 由於不同國家的電視訊號系統支援的影象格式不同,有YUV格式成像,也有RGB格式成像,因此為了保證相容性,需要進行RGB與YUV格式的互轉。 另外YUV格式具有亮度資訊和色彩資訊分離的特點,但大多數影象處理操作都是基於RGB格式,需要將RGB格式轉
Java程式碼 json格式資料轉化成xml jsonToXml
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import java.util.Iterator; import java
json 實體互轉, list json互轉 ,List<實體> 轉List<Object> , List<Objcet> 轉List<Map> map 轉實體 , map轉json
// json 實體互轉, list json互轉 ,List<實體> 轉List<Object> , List<Objcet> 轉List<Map> 使用alibaba的json工具包 import com.al
PIL.Image.open與cv2.imread格式互轉
PIL.Image轉換成OpenCV格式: import cv2 from PIL import Image import numpy path = '/home/gavin/Desktop/demo-card-1.jpeg' img = Image.open(path).convert("
迅捷CAD看圖軟體,DWG、DXF格式互轉
迅捷CAD看圖軟體,DWG、DXF格式互轉。我們在日常工作中常常會遇到各種CAD版本轉換問題。之前我們都是選擇安裝各種CAD轉換器來操作,其中我覺得最好用的就是迅捷CAD轉換器了。但若是不安裝任何CAD轉換器,DWG、DXF格式的CAD圖紙是否可以互轉?小編今天就給大家演示一下,使用迅捷CAD看圖軟體來操作D
json model 互轉
1.json轉model TestModel tm = new TestModel();JavaScriptSerializer js = new JavaScriptSerializer();tm = js.Deserialize<TestModel>(JsonString); 2.mode
java物件與json字串互轉
場景:java物件與json字串互轉換 1.本例使用com.alibaba.fastjson.JSON類 2.實體物件轉換為json字串 public static String toJSONString(Object city) { String jsonStr = ""; if (c
JSON — Java與JSON資料互轉
轉換時Bean所要求的: 被轉換的Bean必需是public的。 Bean被轉換的屬性一定要有對應的get方法,且一定要是public的。 Bean中不能用引用自身的this的屬性,否則執行時出現et.sf.json.JSONException: There is a cy
FastJSON 簡介及其Map/JSON/String 互轉
在日誌解析,前後端資料傳輸互動中,經常會遇到 String 與 map、json、xml 等格式相互轉換與解析的場景,其中 json 基本成為了跨語言、跨前後端的事實上的標準資料互動格式。應該來說各個語言中 解析 json 的庫都一大片(具體 json 格式與三方庫的介紹請見: http:/
經緯度格式互轉-(度轉度分秒 度分秒轉度……)
經緯度格式分為三種: 度: ( ddd.ddddd °) &nb
DataTable 和Json 字串互轉(轉)
#region DataTable 轉換為Json字串例項方法 /// <summary> /// GetClassTypeJosn 的摘要說明 /// </summary> public class GetClassTypeJosn : IHttpHandler
Json物件與Json字串互轉(4種轉換方式)
1.jQuery外掛支援的轉換方式: $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以將json字串轉換成json物件 2.瀏覽器支援的轉換方式(Firefox,chrome,opera,s
C# 時間格式互轉
C# string to DateTime yyyy-MM-dd HH:mm:ss 毫秒輸出 string dateTimeString = "2008-09-12 15:14:56.135"; DateTime time = DateTime.ParseExact(d
二:C#物件、集合、DataTable與Json內容互轉示例;
這個過程沒有什麼需要說的,擼個簡單一點的程式碼說明下:先定義一個人員類,這個類裡面的屬性有string,int,list,列舉,這幾個差不多夠了。 public class people { public string Name { get; set; } pub