天天看点

PHP中json数据的转换

先说一说JSON,JSON 值可以是:

  1. 数字(整数或浮点数)
  2. 字符串(在双引号中)
  3. 逻辑值(true 或 false)
  4. 数组(在方括号中)
  5. 对象(在花括号中)
  6. null。

前端一般和后端传递数据选择JSON是因为

(1)JSON是纯文本格式,是独立于语言和平台的。

(2)生成和解析相对于XML而言要简单。

(3)读写的速度更快。

php中json_encode编码成功的话返回一个JSON格式的字符串,失败的话返回一个false(var_dump一下可以看看是不是string类型)

后端将这个json数据(string)返回给前端,前端再对这个json数据也就是string进行下一步处理。

而json_decode($jsondata,bool),一般是将前台传来的json数据(string)解码为对象类型(bool为false时,默认false),当bool为true时,则将json(string)转化为数组类型,再进下一步处理。

对象类型的操作和数组类型是不一样的

$data = array('a'=>'好','b'=>'hi','c'=>'good','d'=>'nice');
        $jsondata = json_encode($data,JSON_UNESCAPED_UNICODE);//加上JSON_UNESCAPED_UNICODE就不会自动对中文编码
        echo $jsondata;
        //结果{"a":"好","b":"hi","c":"good","d":"nice"},一条JSON格式的字符串
        
        $array = json_decode($jsondata,TRUE);
       	var_dump($array['b']);//调用数组元素
        
        $obj = json_decode($jsondata);
        var_dump($obj->c);//调用对象元素
           

注意: json_encode 和 json_decode只支持utf-8编码的中文字符,GBK的中文字符要用json就得转换一下

PHP5.4版本,已经给Json新增了一个选项: JSON_UNESCAPED_UNICODE。加上这个选项后,就不会自动把中文编码了。

理清一下思路。。。