json_encode和json_decode陷阱

来源:互联网 发布:淘宝客推广产品找不到 编辑:程序博客网 时间:2024/04/29 13:51

写在前

我们知道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