(随笔)PHP接⼝返回给⼩程序的数据格式学习中刚刚涉及⼩程序数据交互,随笔记录⼀些问题。
关于⼩程序请求服务器数据时返回数据的格式与操作
服务端代码(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
phpjson格式化输出[userName] => 钟梓栋
[sex] => 男
[age] => 21
[phone] => 188********
[email] => zhongzidong@163
[location] => ⼴东中⼭
[workYears] => 1
[intention] => 产品经理
[skill] => 喝茶
[hobby] => 喝茶
[logo] =>
[comment] => 哈哈哈哈
[studyTime] =>
[studyLocation] =>
[workTime] =>
[workLocation] =>
)
//转换成JSON格式的结果
json:{
"openId": "1",
"userName": "钟梓栋",
"sex": "男",
"age": "21",
"phone": "188********",
"email": "zhong@163",
"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数据格式化。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。