json学习

来源:互联网 发布:软件猎手怎么下载 编辑:程序博客网 时间:2024/05/18 01:29

Json值:

数组在方括号内:[ ]

对象在花括号内:{ }

{

"employees": [

{ "firstName":"John" ,"lastName":"Doe" },

{ "firstName":"Anna" ,"lastName":"Smith" },

{ "firstName":"Peter" ,"lastName":"Jones" }

]

}


$strr='"1j3p";

“"1j3p"”


$a=array(1,2,3,4)  

“[1,2,3,4]”


$a=array(0=>1,1=>2,2=>3)

"{"0":1,"1":2,"2":3}"


$c=new myc();

"{"str":"2j3" }"


以下json写法都是错的,你能看出错在哪里吗?
  $bad_json = "{ 'bar': 'baz' }";  key和value要用双引号,不能使用但引号
  $bad_json = '{ bar: "baz" }';  key必须使用双引号
  $bad_json = '{ "bar": "baz", }'; 不能出现,

在线检测:

http://www.bejson.com/


php中往数据库中存数据(便于存储和传输):json形式或者序列化(serialize() 把变量和它们的值编码成文本形式
 
unserialize() 恢复原先变量

string json_encode(mixed $a) 返回json形式的字符串,失败时false

mixed json_decode(string $str[,assoc])    string $str为json形式的字符串,其余其他类型则返回null;assoc当该参数为TRUE 时,将返回 array 而非object

 由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。


json语法:

参考:http://www.ruanyifeng.com/blog/2011/01/json_in_php.html

注意:
1 由于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 );

2 对于对象,json_encode后除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。

3 json_decode()总是返回一个PHP对象 ,如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:

4 json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。

  var_dump(json_decode("Hello World")); //null




0 0