二次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 的时候传入的参数,其实是一个数组了。返回给我们了一个对象。

转载于:https://www.cnblogs.com/bin-pureLife/p/4018293.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值