本文目录一览:
- 1、如何在PHP中解析json
- 2、php如何接收js传来的json对象
- 3、JSON PHP中,Json字符串反序列化成对象/数组的方法
- 4、浅谈PHP中JSON数据操作
- 5、php如何返回json对象呢
- 6、如何在php中正确的使用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如何接收js传来的json对象
你无法传json对象到服务端交互的,要传的只是一个字符串(Json),是个字符串!
你发的代码里是json的解析,没有多大意义,你在php页面这样调试
var_dump($_REQUEST);//输出所有数据,如果存在的话,你会看到那个参数是啥
另外,json格式,主要方便javascript解析的,而不是php擅长的内容,多数情况下,是PHP返回json数据给js.
php的数组操作函数有主要的两个json_encode()与json_decode();
从你的代码中,我不确定你用何种方式通信,ajax?
我看你用到了jQuery,那里面有个ajax,方式类似这样的:
$.ajax({
type: "post", //method;can be get with post or request
url: "/mySever.php",//php url
error: function(){alert('Error');},
data: {
data1: name,
data2: age,
},
datatype:"json",//json back
timeout: 5000,
success: function(msg)
{
//eval(msg);//parase here
}
});
return false;
}
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_dump($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_dump($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_dump($fan_jn);//NULL
//使用单引号定义的json字符串反编码操作会成功
$jn
=
'{"name":"tom","age":"20","addr":"beijing"}';
$fan_jn
=
json_decode($jn,true);
var_dump($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,全称是JavaScript
Object
Notation。它是基于JavaScript编程语言ECMA-262
3rd
Edition-December
1999标准的一种轻量级的数据交换格式,主要用于跟服务器进行交换数据。跟XML相类似,它独立语言,在跨平台数据传输上有很大的优势
新建文件json.php,先做encode操作:
//encode
//生成JSON格式数据
$arr
=
array(1,2,3,4,5,6,7,8,9,'Hello','PHP');
echo
json_encode($arr);//json_encode:把一个对象转换成json格式数据
得到的结果是[1,2,3,4,5,6,7,8,9,"Hello","PHP"]
再来做decode操作:
//decode
解码
$jsonStr
=
'{"h":"Hello","w":"World","0":[3,2,1]}';
$obj
=
json_decode($jsonStr);
echo
$obj-h;//使用成员访问的方式就可以得到结果
知道简单的使用方法后,可以尝试着抓API数据,比如天气...
以上所述就是本文的全部内容了,希望大家能够喜欢。
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
如何在php中正确的使用json
将json字符串解析成对象:
$json = '{"a":1,"b":2}';
$obj = json_decode($json);
echo $obj-a;//1
echo $obj-b;//2
将对象转为json字符串
echo json_encode(array('a'=1,'b'=2));//{"a":1,"b":2}