如何用JSON字符串拆分MySQL列数据并解决代码赋值问题
PHP解析MySQL中带转义的JSON字段解决方案
核心问题
从MySQL取出的字段字符串带有转义符\,且缺少JSON必需的外层{},导致无法直接解析提取字段值。
具体实现代码
步骤1:清理并格式化JSON字符串
// 从数据库查询得到的原始数据 $rawDbData = "\"acc\":\"0\",\"alarm\":\"02\",\"batl\":\"6\",\"bats\":\"1\",\"cellid\":\"0\",\"defense\":\"1\",\"gpslev\":\"15\",\"gsmlev\":\"3\",\"lac\":\"0\",\"mcc\":\"0\""; // 去除转义符 $unescapedData = stripslashes($rawDbData); // 补全JSON结构,添加外层大括号 $jsonString = "{" . $unescapedData . "}";
步骤2:解析JSON并提取字段
// 解析为关联数组(第二个参数为true) $parsedData = json_decode($jsonString, true); // 验证解析结果 if (json_last_error() !== JSON_ERROR_NONE) { echo "解析失败:" . json_last_error_msg(); exit; } // 提取所需字段 $acc = $parsedData['acc']; $alarmCode = $parsedData['alarm']; $gpsLevel = $parsedData['gpslev']; // 示例输出 echo "加速度状态:{$acc},告警码:{$alarmCode},GPS信号等级:{$gpsLevel}";
关键细节
stripslashes():专门处理带转义符的字符串,移除多余的\。- 补全
{}:原始存储的内容是JSON对象的内部键值对部分,必须包裹大括号才能被识别为合法JSON。 - 解析选项:
json_decode第二个参数设为true返回关联数组,操作更直观;若设为false(默认)则返回对象,需用$parsedData->acc的方式访问。
内容的提问来源于stack exchange,提问作者James Wright
相关产品推荐
相关产品推荐

