‘壹’ 如何在php中解析json
PHP里面有json_encode(数组)可以把数组给转换成JSON字符串,
而json_decode(JSON字符串,boolean)可以把JSON字符串转换成数组或者对象类型,第二个参数boolean默认为false表示对象类型,true表示解析为数组类型通过下表访问
‘贰’ json字符串转化成json对象问题
觉得是误用了php的json。php正确的写法应该是
$a= array(
'pid'=>'参数一',
'id' => '参数二',
'name'=>'参数'
);
然后才可以用json_encode($a);并被js解码
如果用原先的字符串,
$str = "pid:'参数一', id:'参数二', name:'参数'";
是不需要json编码的,略作修改,直接可以被js解码,改成
$str = "{ pid:'参数一', id:'参数二', name:'参数'}"; //加括号,这已经是json文本
可以被eval("data = "+r_data+";");直接解读
‘叁’ php可以JSON输出json格式吗
json格式与语言无关,任何语言都可以输出json格式的数据。
不过js可以直接json数据转为对象,很方便。
在Php5.2以后内置了json函数,
json_encode json_decode
示例
<?php
$arr = array ('aa'=>1,'ab'=>2,'ac'=>3,'d'=>4);
echo json_encode($arr);
?>
输出:{"aa":1,"ab":2,"ac":3,"d":4}
值得注意,php文件编码最好是utf-8模式
‘肆’ 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用的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后,在转化为对象
你可以参考一下我的建议,1.普通:若php关联数组不含有中文,直接json_encode转换。转换之后用json_deconde($stuJson)转为php对象。
<?php
$stu = array("name"=>"li","age"=>"35");
$stuJson = json_encode($stu);
还有什么疑问的话,可以多去后盾们看一下相关的视频,这样你更清楚
‘柒’ php中json字符串转对象问题
哈,是因为反斜杠 “\"的问题,在正则里面,反斜杠用于匹配一个特殊字符,所以这里,你只写了一个\反斜杠是不行的,如果你想匹配一个反斜杠,需要些两个 \\。
其次是我感觉貌似你这个函数用的不合理,为什么搜索值为空呢?为空的话,那么这个函数就没有任何意义啊。你看看是不是函数的参数顺序写错了?
然后你的第二部分也很奇怪,json作为字符串 $stra = "" 里面的内容要用双引号括起来,字符串内部的双引号要全部换成单引号才对。
‘捌’ php解析json
你 定义$str ="你那一大堆字符串"。
然后 用 $arr=json_decode($str);
返回数组,
还有你的格式好像json_decode不出来哦,把格式整理一下,不行就用正则表达式吧
‘玖’ php 处理json字符串
这个PHP 本身有二个函数 :
1. json_encode( array 或 object) 这个是用来把对象 或 数组转换为 JSON格式数据;
2. json_decode(string , boolen[数组为true,对象不用设置]) 这个是把现有的JSON数据转化为 PHP 数组或对象.
式例:
$a = array(1 => 'a', 2 => 'b', 3 => 'c', 4 => 'd');
$b = json_encode($a);
echo $b; // 这里得到字串 "{"1":"a","2":"b","3":"c","4":"d"}"
$c = json_decode($b, true);
var_mp($c); // 这里得到$a数组
如果JSON数据是一个数据, 转化时建议把json_decode函数的第二个参数设为true, 对象则不用.
希望可以帮到你