如何将指定JSON结构转换为PHP语法并支持双向转换?
JSON与PHP数组/对象的互转方法
1. 将JSON转换为PHP结构
PHP内置的json_decode()函数可直接处理JSON字符串,根据需求可转换为关联数组或stdClass对象:
示例JSON(包含对象和数组)
{ "category": "工具", "items": [ {"id": 1, "name": "锤子", "price": 29.9}, {"id": 2, "name": "螺丝刀", "price": 15.5} ] }
转换为关联数组
第二个参数传true,JSON对象会转为PHP关联数组,数组保持索引结构:
$jsonString = '{ "category": "工具", "items": [ {"id": 1, "name": "锤子", "price": 29.9}, {"id": 2, "name": "螺丝刀", "price": 15.5} ] }'; $phpArray = json_decode($jsonString, true); // 访问数据示例 echo $phpArray['category']; // 输出:工具 echo $phpArray['items'][0]['name']; // 输出:锤子
转换为stdClass对象
不传第二个参数(或传false),JSON对象会转为PHP的stdClass实例,数组仍为索引数组:
$phpObject = json_decode($jsonString); // 访问数据示例 echo $phpObject->category; // 输出:工具 echo $phpObject->items[1]->price; // 输出:15.5
2. 将PHP结构转回JSON
使用json_encode()函数可把PHP数组或对象转回标准JSON字符串,常用参数优化输出:
// 从关联数组转回JSON $jsonFromArray = json_encode($phpArray); echo $jsonFromArray; // 从对象转回JSON $jsonFromObject = json_encode($phpObject); echo $jsonFromObject; // 格式化输出+保留中文(避免转义) echo json_encode($phpArray, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
注意事项
- 若JSON解析失败,
json_decode()会返回null,可通过json_last_error()排查错误原因。 - 当PHP结构包含中文或特殊字符时,建议添加
JSON_UNESCAPED_UNICODE参数避免转义。
内容的提问来源于stack exchange,提问作者Jurgen
相关产品推荐
相关产品推荐

