您的位置:首页 > 移动开发 > 微信开发

(随笔)PHP接口返回给小程序的数据格式

2018-01-22 15:57 253 查看
学习中刚刚涉及小程序数据交互,随笔记录一些问题。

关于小程序请求服务器数据时返回数据的格式与操作

服务端代码(PHP):

 涉及到的MySQL类关键代码(简单写)

public function query($sql){
        return mysqli_query($this->conn,$sql);
    }
public function getAll($sql){
$queryResult = $this->query($sql);
$row = mysqli_fetch_assoc($queryResult);
return $this->result = $row;
}

 相关控制器关键代码(简单写)
 public function getResumeByOpenid($openid){
//由于学习经历&工作经历可有多条,因此分表连接查询
$this->sql = "SELECT * FROM userInfo
JOIN userResume ON userInfo.openId = userResume.openId
WHERE userInfo.openId = '{$openid}'";
$this->getAll($this->sql);
//由于json_encode后的数据是对象数组,因此这里利用PHP内置空类stdclass来传递数据
$tempObj = new stdClass();
foreach ($this->result as $key => $value) {
$tempObj->$key = $value;
}
//传递后的对象
print_r($tempObj);
//传递后被解析为json格式的数据(关键,wx.request接收到的返回数据只可以是JSON,因此必须转为JSON) echo 'json:'.json_encode($tempObj,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
//var_dump($this->result);
return $this->result;
}

测试中浏览器输出结果

//print_r出的对象结果
stdClass Object
(
[openId] => 1
[userName] => 钟梓栋
[sex] => 男
[age] => 21
[phone] => 18888888888
[email] => zhongzidong@163.com
[location] => 广东中山
[workYears] => 1
[intention] => 产品经理
[skill] => 喝茶
[hobby] => 喝茶
[logo] =>
[comment] => 哈哈哈哈
[studyTime] =>
[studyLocation] =>
[workTime] =>
[workLocation] =>
)
//转换成JSON格式的结果
 json:{
"openId": "1",
"userName": "钟梓栋",
"sex": "男",
"age": "21",
"phone": "18888888888",
"email": "zhong@163.com",
"location": "广东中山",
"workYears": "1",
"intention": "产品经理",
"skill": "喝茶",
"hobby": "喝茶",
"logo": "",
"comment": "哈哈哈哈",
"studyTime": "",
"studyLocation": "",
"workTime": "",
"workLocation": ""
}

后端代码中最重要的是这几句

//由于json_encode后的数据是对象数组,因此这里利用PHP内置空类stdClass来传递数据
$tempObj = new stdClass();
foreach ($this->result as $key => $value) {
 $tempObj->$key = $value;
}

//传递后被解析为json格式的数据(关键,wx.request接收到的返回数据只可以是JSON,因此必须转为JSON)
echo 'json:'.json_encode($tempObj,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);

其中
echo 'json:'.json_encode($tempObj,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);

如果只写成

echo 'json:' . json_eccode($tempObj);

输出结果的中文会直接是Unicode码,难以阅读和处理

解决方法是给其加上PHP5.4以后增加的几个常量参数:

JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT

输出结果就可自动转为中文,便于处理和阅读,就不需要像以前需要写JSON数据格式化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: