zoukankan      html  css  js  c++  java
  • 二次json_encode() 和二次 json_decode()

    之前没有留意过这两个函数,昨天群里有人问起。发现如下事情。

    header("Content-type:text/html;charset=utf-8");
    $arr = array('a'=>1,'b'=>2);
    $str = json_encode($arr);
    var_dump($str);
    var_dump(json_encode($str));
    $str_1 = json_encode($str);
    var_dump($str_1);
    
    $arr_1 = json_decode($str_1);
    var_dump($arr_1);
    $obj = json_decode($arr_1);
    var_dump($obj);
    echo $obj->a;

    结果:

    string '{"a":1,"b":2}' (length=13)
    string '"{"a":1,"b":2}"' (length=19)
    string '"{"a":1,"b":2}"' (length=19)
    string '{"a":1,"b":2}' (length=13)
    object(stdClass)[1]
      public 'a' => int 1
      public 'b' => int 2
    1
    

    用json_encode() 二次或者N次 将会把之前转好的json字符串进行转义。

    来看下json_encode()的api

    string json_encode ( mixed $value [, int $options = 0 ] )

    这说第一个参数是混合类型的,除了resource 其余都可以。 后面参数。不想偏离主题。

    因为第一次调用json_encode()的时候传的是数组,第二次调用json_encode()方法的时候参数是字符串。

    用json_decode();

    mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

    api说只能放json字符串。

    但是我们进行第二次json_decode 的时候传入的参数,其实是一个数组了。返回给我们了一个对象。

    积累知识,分享知识,学习知识。
  • 相关阅读:
    3月4日毕设进度
    3月3日毕设进度
    3月2日毕设进度
    3月1日毕设进度
    2月29日毕设进度
    2月28日毕设进度
    2月27日毕设进度
    进度报告七 (重大技术需求调研)
    进度报告六-(重大技术需求调研)
    进度报告五 (重大技术需求调研)
  • 原文地址:https://www.cnblogs.com/bin-pureLife/p/4018293.html
Copyright © 2011-2022 走看看