PHP 把String类型的数据返回成 json 数据 + TP5

在TP5框架中,将包含JSON格式的字符串转换为实际的JSON数据并返回给前端的方法。通过将JSON字符串写入文件,使用file_get_contents读取,json_decode解码并设置为数组编码,最后用json()处理后再返回。加json()前后的var_dump结果对比显示正确返回JSON数据的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:
想在 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) 的结果如下:
PHP 把String类型的数据返回成 json 数据 + TP5

加了 json(), var_dump($newData) 的结果如下:
在这里插入图片描述

3: 前端请求效果:

PHP 把String类型的数据返回成 json 数据

return json($newData) 的请求的结果如下:
PHP 把String类型的数据返回成 json 数据

如果是 return $newdata , 没有加 json() 方法,请求结果如下:
PHP 把String类型的数据返回成 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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值