问题描述:
想在 TP5 里面把一串json字符串,以 json 的数据类型返回
比如,我下面定义了一个 $data ,想把它直接当 json 数据返回
$data = '{
"reason":"查询成功!",
"result":{
"city":"上海",
"realtime":{
"temperature":"17",
"humidity":"68",
"info":"多云",
"wid":"01",
"direct":"北风",
"power":"0级",
"aqi":"54"
},
"future":[
{
"date":"2021-11-17",
"temperature":"13\/18℃",
"weather":"多云",
"wid":{
"day":"01",
"night":"01"
},
"direct":"东风"
},
{
"date":"2021-11-18",
"temperature":"12\/20℃",
"weather":"晴",
"wid":{
"day":"00",
"night":"00"
},
"direct":"东南风转东风"
},
{
"date":"2021-11-19",
"temperature":"12\/20℃",
"weather":"多云",
"wid":{
"day":"01",
"night":"01"
},
"direct":"东风"
},
{
"date":"2021-11-20",
"temperature":"13\/20℃",
"weather":"阴",
"wid":{
"day":"02",
"night":"02"
},
"direct":"东南风转东风"
},
{
"date":"2021-11-21",
"temperature":"7\/18℃",
"weather":"小雨",
"wid":{
"day":"07",
"night":"07"
},
"direct":"西北风"
}
]
},
"error_code":0
}';
问题解决:
1: 把 $data 里面的内容复制,写入到文件里面: 下面用 test.json;
{
"reason":"查询成功!",
"result":{
"city":"上海",
"realtime":{
"temperature":"17",
"humidity":"68",
"info":"多云",
"wid":"01",
"direct":"北风",
"power":"0级",
"aqi":"54"
},
"future":[
{
"date":"2021-11-17",
"temperature":"13\/18℃",
"weather":"多云",
"wid":{
"day":"01",
"night":"01"
},
"direct":"东风"
},
{
"date":"2021-11-18",
"temperature":"12\/20℃",
"weather":"晴",
"wid":{
"day":"00",
"night":"00"
},
"direct":"东南风转东风"
},
{
"date":"2021-11-19",
"temperature":"12\/20℃",
"weather":"多云",
"wid":{
"day":"01",
"night":"01"
},
"direct":"东风"
},
{
"date":"2021-11-20",
"temperature":"13\/20℃",
"weather":"阴",
"wid":{
"day":"02",
"night":"02"
},
"direct":"东南风转东风"
},
{
"date":"2021-11-21",
"temperature":"7\/18℃",
"weather":"小雨",
"wid":{
"day":"07",
"night":"07"
},
"direct":"西北风"
}
]
},
"error_code":0
}
2: php 文件里面写上下面几行代码:
$testJson = file_get_contents('./test.json', true);
$newData = json_decode($testJson, true);
return json($newData); // 这里前面加上 json 才能生效
如果没有加 json() ,var_dump($newData) 的结果如下:
加了 json(), var_dump($newData) 的结果如下:
3: 前端请求效果:
return json($newData) 的请求的结果如下:
如果是 return $newdata , 没有加 json() 方法,请求结果如下:
总结: PHP 把String类型的数据返回成 json 数据
1: 把 json 数据写在一个文件里面
2: file_get_contents() 取出来
3: 用 json_decode(file_get_contents(), true) 进行编码 【 后面的 true表示用 array 编码,而不是 classStr 】
4: return json(json_decode(file_get_contents(), true))