json轉換php數組對象
Ⅰ php生成數組轉成json後,在轉化為對象
你可以參考一下我的建議,1.普通:若php關聯數組不含有中文,直接json_encode轉換。轉換之後用json_deconde($stuJson)轉為php對象。
<?php
$stu = array("name"=>"li","age"=>"35");
$stuJson = json_encode($stu);
還有什麼疑問的話,可以多去後盾們看一下相關的視頻,這樣你更清楚
Ⅱ php 將json格式數據轉換成數組的方法
如下所示:
//json格式數據
$data
=
'[{
"F_MoleId":
"1",
"F_ParentId":
"0",
"F_EnCode":
"SysManage",}]';
//轉換成數組
$arr
=
json_decode($data,true);
//輸出
var_mp($arr);
以上這篇php
將json格式數據轉換成數組的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:PHP使用JSON和將json還原成數組在PHP語言中使用JSON和將json還原成數組的方法PHP實現數組轉JSon和JSon轉數組的方法示例php
json轉換成數組形式代碼分享php數組轉成json格式的方法
Ⅲ json 轉php array問題!著急!200分!
//======================================================test.php
<?php
include('json.class.php');
$json_str = "[{0:{s_id:'1999',name:'元素'},1:{s_id:'2049',name:'時韻'},2:{s_id:'2050',name:'里程'},3:{s_id:'2051',name:'CIVIC'},4:{s_id:'2927',name:'pilot'},5:{s_id:'2857',name:'insight'},6:{s_id:'2904',name:'S2000'}}]";
$json = new MY_JSON();
echo $json_str;
echo '<hr><pre>';
var_mp($json->decode($json_str));
echo '</pre><hr>';
?>
//===============================================json.class.php
//
<?php define('MY_JSON_SLICE', 1); define('MY_JSON_IN_STR', 2); define('MY_JSON_IN_ARR', 3); define('MY_JSON_IN_OBJ', 4); define('MY_JSON_IN_CMT'兄蘆正, 5); define('MY_JSON_LOOSE_TYPE', 16); define('MY_JSON_SUPPRESS_ERRORS', 32); class MY_JSON { function MY_JSON($use = 0) { $this->use = $use; } function utf162utf8($utf16) { if(function_exists('mb_convert_encoding')) { return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16'); } $bytes = (ord($utf16{0}) << 8) | ord($utf16{1}); switch(true) { case ((0x7F & $bytes) == $bytes): return chr(0x7F & $bytes); case (0x07FF & $bytes) == $bytes: return chr(0xC0 | (($bytes >> 6) & 0x1F)) . chr(0x80 | ($bytes & 0x3F)); case (0xFFFF & $bytes) == $bytes: return chr(0xE0 | (($bytes >> 12) & 0x0F)) . chr(0x80 | (($bytes >> 6) & 0x3F)) . chr(0x80 | ($bytes & 0x3F)); } return ''; } function utf82utf16($utf8) { if(function_exists('mb_convert_encoding')) { return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8'羨悔); } switch(strlen($utf8)) { case 1: return $utf8; case 2: return chr(0x07 & (ord($utf8{0}) >> 2)) . chr((0xC0 & (ord($utf8{0}) << 6)) | (0x3F & ord($utf8{1}))); case 3: return chr((0xF0 & (ord($utf8{0}) << 4)) | (0x0F & (ord($utf8{1}) >> 2))) . chr((0xC0 & (ord($utf8{1}) <嘩爛< 6)) | (0x7F & ord($utf8{2}))); } return ''; } function encode($var) { switch (gettype($var)) { case 'boolean': return $var ? 'true' : 'false'; case 'NULL': return 'null'; case 'integer': return (int) $var; case 'double': case 'float': return (float) $var; case 'string': $ascii = ''; $strlen_var = strlen($var); /* * Iterate over every character in the string, * escaping with a slash or encoding to UTF-8 where necessary */ for ($c = 0; $c < $strlen_var; ++$c) { $ord_var_c = ord($var{$c}); switch (true) { case $ord_var_c == 0x08: $ascii .= '\b'; break; case $ord_var_c == 0x09: $ascii .= '\t'; break; case $ord_var_c == 0x0A: $ascii .= '\n'; break; case $ord_var_c == 0x0C: $ascii .= '\f'; break; case $ord_var_c == 0x0D: $ascii .= '\r'; break; case $ord_var_c == 0x22: case $ord_var_c == 0x2F: case $ord_var_c == 0x5C: $ascii .= '\\'.$var{$c}; break; case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)): $ascii .= $var{$c}; break; case (($ord_var_c & 0xE0) == 0xC0): $char = pack('C*', $ord_var_c, ord($var{$c + 1})); $c += 1; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xF0) == 0xE0): $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2})); $c += 2; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xF8) == 0xF0): $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2}), ord($var{$c + 3})); $c += 3; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xFC) == 0xF8): $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2}), ord($var{$c + 3}), ord($var{$c + 4})); $c += 4; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; case (($ord_var_c & 0xFE) == 0xFC): $char = pack('C*', $ord_var_c, ord($var{$c + 1}), ord($var{$c + 2}), ord($var{$c + 3}), ord($var{$c + 4}), ord($var{$c + 5})); $c += 5; $utf16 = $this->utf82utf16($char); $ascii .= sprintf('\u%04s', bin2hex($utf16)); break; } } return '"'.$ascii.'"'; case 'array': if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { $properties = array_map(array($this, 'name_value'), array_keys($var), array_values($var)); foreach($properties as $property) { if(MY_JSON::isError($property)) { return $property; } } return '{' . join(',', $properties) . '}'; } $elements = array_map(array($this, 'encode'), $var); foreach($elements as $element) { if(MY_JSON::isError($element)) { return $element; } } return '[' . join(',', $elements) . ']'; case 'object': $vars = get_object_vars($var); $properties = array_map(array($this, 'name_value'), array_keys($vars), array_values($vars)); foreach($properties as $property) { if(MY_JSON::isError($property)) { return $property; } } return '{' . join(',', $properties) . '}'; default: return ($this->use & MY_JSON_SUPPRESS_ERRORS) ? 'null' : new MY_JSON_Error(gettype($var)." can not be encoded as JSON string"); } } function name_value($name, $value) { $encoded_value = $this->encode($value); if(MY_JSON::isError($encoded_value)) { return $encoded_value; } return $this->encode(strval($name)) . ':' . $encoded_value; } function rece_string($str) { $str = preg_replace(array( '#^\s*//(.+)$#m', '#^\s*/\*(.+)\*/#Us', '#/\*(.+)\*/\s*$#Us' ), '', $str); return trim($str); } function decode($str) { $str = $this->rece_string($str); switch (strtolower($str)) { case 'true': return true; case 'false': return false; case 'null': return null; default: $m = array(); if (is_numeric($str)) { return ((float)$str == (integer)$str) ? (integer)$str : (float)$str; } elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) { $delim = substr($str, 0, 1); $chrs = substr($str, 1, -1); $utf8 = ''; $strlen_chrs = strlen($chrs); for ($c = 0; $c < $strlen_chrs; ++$c) { $substr_chrs_c_2 = substr($chrs, $c, 2); $ord_chrs_c = ord($chrs{$c}); switch (true) { case $substr_chrs_c_2 == '\b': $utf8 .= chr(0x08); ++$c; break; case $substr_chrs_c_2 == '\t': $utf8 .= chr(0x09); ++$c; break; case $substr_chrs_c_2 == '\n': $utf8 .= chr(0x0A); ++$c; break; case $substr_chrs_c_2 == '\f': $utf8 .= chr(0x0C); ++$c; break; case $substr_chrs_c_2 == '\r': $utf8 .= chr(0x0D); ++$c; break; case $substr_chrs_c_2 == '\\"': case $substr_chrs_c_2 == '\\\'': case $substr_chrs_c_2 == '\\\\': case $substr_chrs_c_2 == '\\/': if (($delim == '"' && $substr_chrs_c_2 != '\\\'') || ($delim == "'" && $substr_chrs_c_2 != '\\"')) { $utf8 .= $chrs{++$c}; } break; case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)): $utf16 = chr(hexdec(substr($chrs, ($c + 2), 2))) . chr(hexdec(substr($chrs, ($c + 4), 2))); $utf8 .= $this->utf162utf8($utf16); $c += 5; break; case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F): $utf8 .= $chrs{$c}; break; case ($ord_chrs_c & 0xE0) == 0xC0: $utf8 .= substr($chrs, $c, 2); ++$c; break; case ($ord_chrs_c & 0xF0) == 0xE0: $utf8 .= substr($chrs, $c, 3); $c += 2; break; case ($ord_chrs_c & 0xF8) == 0xF0: $utf8 .= substr($chrs, $c, 4); $c += 3; break; case ($ord_chrs_c & 0xFC) == 0xF8: $utf8 .= substr($chrs, $c, 5); $c += 4; break; case ($ord_chrs_c & 0xFE) == 0xFC: $utf8 .= substr($chrs, $c, 6); $c += 5; break; } } return $utf8; } elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) { if ($str{0} == '[') { $stk = array(MY_JSON_IN_ARR); $arr = array(); } else { if ($this->use & MY_JSON_LOOSE_TYPE) { $stk = array(MY_JSON_IN_OBJ); $obj = array(); } else { $stk = array(MY_JSON_IN_OBJ); $obj = array(); } } array_push($stk, array('what' => MY_JSON_SLICE, 'where' => 0, 'delim' => false)); $chrs = substr($str, 1, -1); $chrs = $this->rece_string($chrs); if ($chrs == '') { if (reset($stk) == MY_JSON_IN_ARR) { return $arr; } else { return $obj; } } $strlen_chrs = strlen($chrs); for ($c = 0; $c <= $strlen_chrs; ++$c) { $top = end($stk); $substr_chrs_c_2 = substr($chrs, $c, 2); if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == MY_JSON_SLICE))) { $slice = substr($chrs, $top['where'], ($c - $top['where'])); array_push($stk, array('what' => MY_JSON_SLICE, 'where' => ($c + 1), 'delim' => false)); if (reset($stk) == MY_JSON_IN_ARR) { array_push($arr, $this->decode($slice)); } elseif (reset($stk) == MY_JSON_IN_OBJ) { $parts = array(); if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { $key = $this->decode($parts[1]); $val = $this->decode($parts[2]); if ($this->use & MY_JSON_LOOSE_TYPE) { $obj[$key] = $val; } else { $obj[$key] = $val; } } elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) { $key = $parts[1]; $val = $this->decode($parts[2]); if ($this->use & MY_JSON_LOOSE_TYPE) { $obj[$key] = $val; } else { $obj[$key] = $val; } } } } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != MY_JSON_IN_STR)) { array_push($stk, array('what' => MY_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c})); } elseif (($chrs{$c} == $top['delim']) && ($top['what'] == MY_JSON_IN_STR) && ((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) { array_pop($stk); } elseif (($chrs{$c} == '[') && in_array($top['what'], array(MY_JSON_SLICE, MY_JSON_IN_ARR, MY_JSON_IN_OBJ))) { array_push($stk, array('what' => MY_JSON_IN_ARR, 'where' => $c, 'delim' => false)); } elseif (($chrs{$c} == ']') && ($top['what'] == MY_JSON_IN_ARR)) { array_pop($stk); } elseif (($chrs{$c} == '{') && in_array($top['what'], array(MY_JSON_SLICE, MY_JSON_IN_ARR, MY_JSON_IN_OBJ))) { array_push($stk, array('what' => MY_JSON_IN_OBJ, 'where' => $c, 'delim' => false)); } elseif (($chrs{$c} == '}') && ($top['what'] == MY_JSON_IN_OBJ)) { array_pop($stk); } elseif (($substr_chrs_c_2 == '/*') && in_array($top['what'], array(MY_JSON_SLICE, MY_JSON_IN_ARR, MY_JSON_IN_OBJ))) { array_push($stk, array('what' => MY_JSON_IN_CMT, 'where' => $c, 'delim' => false)); $c++; } elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == MY_JSON_IN_CMT)) { array_pop($stk); $c++; for ($i = $top['where']; $i <= $c; ++$i) $chrs = substr_replace($chrs, ' ', $i, 1); } } if (reset($stk) == MY_JSON_IN_ARR) { return $arr; } elseif (reset($stk) == MY_JSON_IN_OBJ) { return $obj; } } } } function isError($data, $code = null) { if (class_exists('pear')) { return PEAR::isError($data, $code); } elseif (is_object($data) && (get_class($data) == 'MY_JSON_error' || is_subclass_of($data, 'MY_JSON_error'))) { return true; } return false; } } if (class_exists('PEAR_Error')) { class MY_JSON_Error extends PEAR_Error { function MY_JSON_Error($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { parent::PEAR_Error($message, $code, $mode, $options, $userinfo); } } } else { class MY_JSON_Error { function MY_JSON_Error($message = 'unknown error', $code = null, $mode = null, $options = null, $userinfo = null) { } } } ?>
Ⅳ JSON PHP中,Json字元串反序列化成對象/數組的方法
如下所示:
<?php
//php反編碼解析json信息
//json_decode(json字元串);
$city
=
array('shandong'=>'jinan','henan'=>'zhengzhou','hebei'=>'shijiazhuang');
$jn_city
=
json_encode($city);
//反編碼json
$fan_city
=
json_decode($jn_city,false);//第二個參數false則返回object類型,false可以默認不寫
var_mp($fan_city);//object(stdClass)#1
(3)
{
["shandong"]=>
string(5)
"jinan"
["henan"]=>
string(9)
"zhengzhou"
["hebei"]=>
string(12)
"shijiazhuang"
}
echo
"<br
/>";
$fan_city
=
json_decode($jn_city,true);//第二個參數true則返回array類型
var_mp($fan_city);//array(3)
{
["shandong"]=>
string(5)
"jinan"
["henan"]=>
string(9)
"zhengzhou"
["hebei"]=>
string(12)
"shijiazhuang"
}
手動寫的JSON字元串一定要用單引號才能成功反序列化成對象/數組:
<?php
//json信息反編碼
//不同php版本,對「純json字元串」解析存在問題
//使用雙引號定義的json字元串反編碼操作變為null
//$jn
=
"{'name':'tom','age':'20','addr':'beijing'}";
//$fan_jn
=
json_decode($jn,true);
//var_mp($fan_jn);//NULL
//使用單引號定義的json字元串反編碼操作會成功
$jn
=
'{"name":"tom","age":"20","addr":"beijing"}';
$fan_jn
=
json_decode($jn,true);
var_mp($fan_jn);
以上這篇JSON
PHP中,Json字元串反序列化成對象/數組的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:C#實現JSON字元串序列化與反序列化的方法jquery序列化form表單使用ajax提交後處理返回的json數據js解析與序列化json數據(二)序列化探討Json序列化和反序列化方法解析Jquery
組合form元素為json格式,asp.net反序列化jQuery實現form表單元素序列化為json對象的方法淺析JSON序列化與反序列化JS實現json的序列化和反序列化功能示例js解析與序列化json數據(三)json的解析探討javaScript實現的反序列化json字元串操作示例
Ⅳ php怎麼將數組數組轉化為json格式的數據
一、json_encode()
[php]view plain
<?php
$arr=array('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echojson_encode($arr);
?>
{"a":1,"b":2,"c":3,"d":4,"e":5}
$obj->body='anotherpost';
$obj->id=21;
$obj->approved=true;
$obj->favorite_count=1;
$obj->status=NULL;
echojson_encode($obj);
{
"body":"anotherpost",
"id":21,
"approved":true,
"favorite_count":1,
"status":null
}
- 由於json只接受utf-8編碼的字元,所以json_encode()的參數必須是utf-8編碼,否則會得到空字元或者null。當中文使用GB2312編碼,或者外文使用ISO-8859-1編碼的時候,這一點要特別注意。
輸出
[php]view plain
再看一笑祥個對象轉換的例子:
[php]view plain
輸出
[php]view plain
二、索引數組和關聯數組
PHP支持兩種數組,一種是只保存"值"(value)的索引數組(indexed array),另一種是保存"名值對"(name/value)的關聯數組(associative array)。
由於javascript不支持關聯數組,所以json_encode()只將索引數組(indexed array)轉為數組格式,而將關聯數組(associative array)轉為對象格式。
Ⅵ php關於JSON轉數組的問題
var_mp(json_decode($json,true));
json_decode — 對JSON 格式的字元串進行解碼
望採納 Thx
Ⅶ php怎麼把json解析成數組
在 php 里,對於 json 的操作,通常使用 json_encode 和 json_decode 函數,將 json 數據解析成數組使用 json_decode 函數,以下是示例代碼:
<?php
$json='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_mp(json_decode($json,true));
?>
Ⅷ json在php中的使用之如何轉換json為數組
看你怎麼傳遞這個json的.
如果是字元串傳遞過去, 那麼這個串要eval 下, 或者使用 json2.js 中的 JSON.parse(jsontext) 方法
附: json2.js 地址:
https://github.com/douglascrockford/JSON-js
或者點擊直接下載:
如果是JSONP 協議傳遞過去, 就可以直接使用;
建議採用jquery+ajax模式來處理json, 哪怕是同步的, 調用起來也比直接 post/get 來的方便.