文档章节

php数组转json问题

yankewei
 yankewei
发布于 2016/08/15 22:48
字数 363
阅读 15
收藏 0

今天在与app对接的时候,遇到了一些问题:就是在app页面中插入一条广告,这条广告是从数据库中取出,数据可能为空,就在这个  `空` 上遇到了问题,举例:

第一种情况:有数据:

<?php
$data['person'] = array('id'=>1,'name'=>'TheOrdinaryWorld','age'=>23);
echo json_encode(array('code'=>200,'message'=>'数据返回成功','data'=>$data));

输出的是:

{
    "code":200,
    "message":"数据返回成功",
    "data":{
        "person":{
            "id":1,
            "name":"yankewei",
            "age":23
        }
    }
}

这是期望看到的数据格式。

第二种情况:没有数据

<?php
$data['person'] = array();
echo json_encode(array('code'=>200,'message'=>'数据返回成功','data'=>$data));

输出的是:

{
    "code":200,
    "message":"数据返回成功",
    "data":{
        "person":[

        ]
    }
}

这里看到person是一个数组,这时,app端找我了 ,这个person有数据你返回对象,没有数据你返回一个数组,这我们怎么去解析,都返回一个对象才可以,空的话也应该是一个空对象,当时不知道怎么办,就说那我返回一个null吧,结果是这样:

{
    "code":200,
    "message":"数据返回成功",
    "data":{
        "person":null
    }
}

等我回到家,想起这个,怎么返回一个空对象,于是就改为这样:

<?php
$data['person'] = (object)array();
echo json_encode(array('code'=>200,'message'=>'数据返回成功','data'=>$data));

这样就返回了一个空对象:

{
    "code":200,
    "message":"数据返回成功",
    "data":{
        "person":{

        }
    }
}

其实我也不知道返回null和一个空对象哪个好。

© 著作权归作者所有

共有 人打赏支持
yankewei
粉丝 1
博文 8
码字总数 2518
作品 0
昌平
程序员
私信 提问
最近获得的新技能,和旧知识的巩固/json,php的数组问题

最近做一个图标显示,需要在js中使用ajax返回的数组,因此开始对json进一步了解 1. 先说将php多维数组的for定义,和php数组转为json数据包,这样下面说js使用json也好说 1.1 多维数组定义: ...

issac宝华
2016/01/30
7
0
PHP将数组转为json出现的中文乱码的问题

将GBK编码的含有中文数组转为json格式,先将每个值进行urlencode,然后json_encode,最后urldecode即可。 2.将json转为数组 3.终极处理方法,对数组进行编码转换 用途:中文处理,在返回json时...

Corwien
2016/01/26
142
7
json_encode , json 还是数组?(转)

在 ajax 横行的今天,json 顺理成章地成为了前后端交互一个极其重要的工具。对于 PHP 来说,通常使用 json_encode 方法将一个 PHP 组数,转换成前端可以解析的 json 字符串,这也是 PHP 手册...

zyt_1978
2016/06/19
18
0
解决json_encode中文UNICODE转码问题

用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”u***”的格式,如果想汉字不进行转码,这里提供三种方法 1.升级PHP,在PHP5.4, 这个问题终于得以解决, Json新增了...

grushy
2014/10/21
0
0
PHP json_encode 处理汉字为空 服务端JSON汉字编码

PHP json_encode 处理汉字为空 服务端JSON汉字编码 原因是这个汉字是gbk编码 , json只能处理utf-8的编码 ,所以要先将数据转码 用Extjs接收PHP服务端返回的Json结果时,发现只要是汉字(从S...

李佳顺
2014/07/24
0
1

没有更多内容

加载失败,请刷新页面

加载更多

新手也能看懂,消息队列其实很简单

该文已加入开源项目:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目,Star 数接近 16k)。地址:https://github.com/Snailclimb/JavaGuide. 本文内容思维导图: 消息...

阿里云官方博客
26分钟前
4
0
如何在Chrome浏览器中启动deviceready事件(尝试调试phonegap项目)?

我正在开发PhoneGap应用程序,我希望能够在Chrome中调试它,而不是在电话上调试。但是,我在onGetReady()函数中初始化我的代码,该函数在PhoneGap触发“deviceready”事件时触发。由于Chr...

kisshua
今天
9
0
nginx中部署vue打包后的静态文件

如何在nginx中部署静态资源就不描述了, 请看我的这篇博客 将vue脚手架项目打包后的静态文件放到nginx上, 发现有个问题, 即url上有#, 怎么去掉这个#呢. 1 项目中router的mode 路由的mode要为h...

克虏伯
今天
13
0
JS容易理解错误的地方

在这端代码执行的末尾,你会不会hi变量回事函数中的hi了?你会不会认为这不是按引用传递了? 对值传递和引用传递产生质疑了? 1 var hi = {};2 function sayHello(hi) { ...

器石_
今天
10
0
Java开发学习--MongoDB

之前只学过sql,第一次使用非关系型数据库。以前对于关系型数据库与非关系型数据库的概念很模糊,通过这次的学习对这两者有了一个清晰的概念。 主键 在MongoDB中,主键名叫"_id",如果在生成...

微笑向暖wx
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部