json_encode和json_decode陷阱

写在前

我们知道WEB模式是“请求-响应”模式

    客户端(浏览器等)请求数据或页面 -- 服务端接收请求并处理数据(数据库操作或响应缓存) -- 返回数据给客户端,客户端解析数据并展示给用户

这里涉及到常用的MVC设计模式

    models( M )         ------     数据持久层 ------ 负责与数据库打交道。

    views( V )             ------     展示层         ------  用户看到的界面

    controlllers( C )    ------     控制层         ------  也称业务逻辑层,负责用户交互和数据库之间的桥接

写view层数据接口的时候,有两种常用的方法。

    第一种是通过form表单提交数据到后台,这里不讨论。

    第二种是ajax,在处理一些异步交互的时候使用最为频繁。

我们常常使用ajax来绑定数据和url提交到后台(controllers),控制层获取到前台传送过来的数据,传递到model层对数据库进行操作或直接读取缓存,处理完毕的数据通常编码为json格式并返回给前台,前台解析json并动态更新到用户界面上,这里称为一个异步交互。

正文

这里我们着重探讨一下PHP处理json的json_encodejson_decode函数。

json_encode

先上代码


再看看输出的结果

大家可以发现一个很奇怪的问题发生了,当键值为0的时候按数组处理,其他键值则作为对象处理。那么如果还是想按对象编码该怎么做呢?

使用json_encode的第二个可选参数JSON_FORCE_OBJECT强转成对象

json_decode

一般我们习惯操作数组,那么可以使用json_decode第二个可选参数true,将返回array而不是object

如果一定要操作object也可以,不过语法有点奇怪,并不像操作数组那么方便,看代码

好了,这些都是在使用过程遭遇到的一些问题,希望能够帮到与我一样遇到这些问题的童鞋,不对之处希望大力指正~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值