标签归档:json

对象转换 json字符串

不同语言之间可以将数据格式化成json对象进行通信
下载地址:http://www.json.org/其中包含了各种语言对json对象和字符串的转换。
引用js,来自https://github.com/douglascrockford/JSON-js的json.js

$(function(){
 	 	var m = {};
 	 	m.a = "hello";
		alert(m.toJSONString());
 });

弹出的值为{“a”:”hello”}。
根据这样的标准可以通过js将表单中的数据格式化为一个对象,然后转为json字符串,最后通过PHP端将json字符串转为php对象,完成调用。
这样的好处在于,不再拘泥于客户端表单的字段,可以为任何形式,只要通过某些js代码转化成为服务器需要的数据就可以了!

jsondecode与jsonencode的不可逆性

单独数组的json_encode:

	$a = array();
	$a['fun']='fun';
	$a['one']='one';
	$b = json_encode($a);
	$a = json_decode($b);
	var_dump($a);

执行完这一段代码以后,$a已经不是之前的那个数组了。

对象的json_encode:

    	$a = new stdClass();
	$a->nihao='nihao';
	$b = json_encode($a);
	$a = json_decode($b);
	var_dump($a);

执行完这一段代码以后,$a仍然是以前的那个对象。

对象与数组之间的嵌套:

	$a = new stdClass();
	$a->nihao=array('sss'=>'one','xxx'=>'yyy');
	$b = json_encode($a);
	$a = json_decode($b);
	var_dump($a);

这样之后,内部的数组也会变成对象。

数组与对象之间的嵌套:

	$a = new stdClass();
	$a->nihao='nihao';
	$c['one']=$a;
	$b = json_encode($c);
	$a = json_decode($b);
	var_dump($a);

外层的数组也变成了对象。
得出结论:json_encode总是以对象的方式对数据进行组织,所以一但用json编码,在用json编码,数据就成了对象了。除数组以外的元素,进行json_encode以后都会保持原来的类型不变。