0

0

php怎么返回json数据给flutter_flutter接收php的json数据【教程】

蓮花仙者

蓮花仙者

发布时间:2026-02-20 19:18:11

|

371人浏览过

|

来源于php中文网

原创

php后端必须设置content-type为application/json并处理cors,flutter需显式jsondecode且校验键名;避免bom、隐藏输出及未等待异步。

php怎么返回json数据给flutter_flutter接收php的json数据【教程】

PHP 后端必须设置正确的 Content-Type

Flutter 的 http.get()http.post() 默认会严格校验响应头,如果 PHP 没显式声明 Content-Type: application/json; charset=utf-8,即使返回的是合法 JSON,Dart 侧也可能解析失败或抛出 FormatException

常见错误现象:Flutter 控制台报 type 'String' is not a subtype of type 'Map<string dynamic>'</string>,说明 Dart 没自动解析 JSON,而是把原始字符串当成了 String

  • 必须在输出 JSON 前调用 header('Content-Type: application/json; charset=utf-8');
  • 避免在 header() 前有任何输出(包括空格、BOM、echoprint),否则会触发 “Headers already sent” 错误
  • 推荐用 json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES),防止中文转义和 URL 斜杠被编码

PHP 返回数组要确保键名是字符串且无特殊字符

Flutter 的 jsonDecode() 能解析标准 JSON,但 PHP 数组若含非法键名(如数字开头、空格、点号、中文键),json_encode() 仍能生成 JSON,但 Dart 解析后可能无法用 map['key'] 正常取值(尤其在 Map<string dynamic></string> 类型检查下)。

使用场景:比如你传 ['user_id' => 123, 'full name' => 'Alice'],Dart 里 map['full name'] 可用,但 IDE 提示不安全;若用 ['1id' => 123],Dart 会拒绝类型推导为 Map<string dynamic></string>

立即学习PHP免费学习笔记(深入)”;

狸谱App
狸谱App

AI壁纸漫画梗图,年轻人的抽象创作社区

下载
  • PHP 中统一用小写字母+下划线命名键名(如 user_idcreated_at
  • 避免直接 json_encode($_POST) —— 用户提交的键名不可控,应先映射到白名单字段
  • 对敏感字段(如密码)务必在 json_encode()unset() 或过滤

Flutter 端要用 jsonDecode() 显式解析,别依赖自动转换

Dart 的 http 包不会自动把响应体转成 Map,它只返回 Response 对象,response.body 永远是 String。所谓“自动解析 JSON”是常见误解。

容易踩的坑:写成 final data = response.body; 就直接当 Map 用,结果运行时报错。

  • 必须导入 'dart:convert' 并调用 jsonDecode(response.body)
  • 建议包在 try-catch 里,捕获 FormatException(对应 PHP 返回了非 JSON 内容,比如 PHP 错误堆栈或 HTML)
  • 若接口返回数组(如 [{"id":1},{"id":2}]),jsonDecode() 结果是 List<dynamic></dynamic>,需手动 .map((e) => MyModel.fromJson(e)).toList()

跨域问题(CORS)在调试时最常卡住请求

Flutter Web 或 Android/iOS 模拟器访问本地 PHP(如 http://10.0.2.2:8000/api.php)时,浏览器或 WebView 会执行 CORS 检查。PHP 不返回正确响应头,请求直接被拦截,Flutter 甚至收不到响应(SocketException 或超时)。

不是所有环境都表现一致:Android 真机直连本机 PHP 通常无 CORS,但 Flutter Web 和 iOS 模拟器一定有。

  • PHP 文件开头加这三行:
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
    header('Access-Control-Allow-Headers: Content-Type');
  • 如果用了 POST 且带 token,还需允许 Authorization 头:header('Access-Control-Allow-Headers: Content-Type, Authorization');
  • 生产环境禁止用 *,应指定 Flutter 前端域名(如 http://localhost:3000
实际开发中,最难排查的往往是 PHP 输出了隐藏字符(比如 UTF-8 BOM)导致 JSON 解析失败,或者 Flutter 没处理好异步等待就去读数据。这两处没日志、不报明确错误,但整个流程就卡住。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

442

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

544

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

322

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

81

2025.09.10

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

13

2026.02.03

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

790

2023.08.02

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6403

2023.09.14

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

796

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 12.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 11.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号