上一篇
📢 最新动态(2025年8月)
PHP 8.4 最新版本进一步优化了JSON解析性能,内置的json_decode()
和json_encode()
函数在处理大型数据集时效率提升高达15%!新增的JSON_THROW_ON_ERROR
模式让错误处理更加直观,开发者可以更轻松地捕获并调试JSON解析问题。
JSON(JavaScript Object Notation)已经成为现代Web开发中数据交换的黄金标准,无论是API响应、配置文件存储,还是前后端通信,JSON都以其轻量、易读、跨语言的特性占据主导地位,而PHP作为后端开发的常青树,对JSON的支持也早已炉火纯青!
json_decode()
:字符串转PHP数组/对象$jsonString = '{"name":"小明","age":25,"skills":["PHP","JSON","MySQL"]}'; $data = json_decode($jsonString, true); // 第二个参数为true时返回关联数组 echo $data['name']; // 输出:小明 print_r($data['skills']); // 输出:Array ( [0] => PHP [1] => JSON [2] => MySQL )
💡 小技巧:不加true
参数时,json_decode()
会返回stdClass对象,访问方式变为$data->name
。
json_encode()
:PHP数组/对象转JSON字符串$user = [ 'id' => 101, 'email' => 'user@example.com', 'is_active' => true ]; echo json_encode($user); // 输出:{"id":101,"email":"user@example.com","is_active":true}
🌟 美化输出:加上JSON_PRETTY_PRINT
选项让JSON更易读:
echo json_encode($user, JSON_PRETTY_PRINT);
JSON解析出错时,默认不会抛出异常(PHP传统艺能了😅),但你可以这样捕获错误:
$malformedJson = '{"name": "张三", "age": }'; // 错误的JSON $data = json_decode($malformedJson); if (json_last_error() !== JSON_ERROR_NONE) { echo '解析失败!错误原因:' . json_last_error_msg(); // 输出:解析失败!错误原因:Syntax error }
🔥 PHP 8.0+ 推荐方式:使用JSON_THROW_ON_ERROR
直接抛异常!
try { $data = json_decode($malformedJson, true, 512, JSON_THROW_ON_ERROR); } catch (JsonException $e) { echo '捕获到异常:' . $e->getMessage(); }
$file = fopen('large_data.json', 'r'); while ($line = fgets($file)) { $data = json_decode($line, true); // 逐行处理数据,避免内存爆炸 } fclose($file);
如果多次操作同一数据,先json_decode()
存为变量,而不是反复解析原始字符串。
编码时用JSON_UNESCAPED_UNICODE
避免中文被转义:
echo json_encode(['中文'=>'测试'], JSON_UNESCAPED_UNICODE); // 输出:{"中文":"测试"} (而不是Unicode转义形式)
假设调用天气API返回如下JSON:
{ "city": "北京", "temperature": 28.5, "forecast": ["晴","多云","雷阵雨"] }
PHP解析代码:
$apiResponse = file_get_contents('https://api.weather.example/beijing'); $weather = json_decode($apiResponse, true, 512, JSON_THROW_ON_ERROR); echo "当前城市:{$weather['city']},温度:{$weather['temperature']}℃\n"; echo "未来三天天气:" . implode(' → ', $weather['forecast']);
json_decode()
和json_encode()
是PHP处理JSON的瑞士军刀。 JSON_THROW_ON_ERROR
模式。 你已经掌握了PHP中高效解析JSON的秘诀!快去和你的数据愉快玩耍吧~ 🎉
本文由 杭书竹 于2025-08-01发表在【云服务器提供商】,文中图片由(杭书竹)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/507765.html
发表评论