PHP解析JSON数据:从生成到数组转换的完整代码示例

Ruby
Ruby
发布时间:2026-10-14 | 3人浏览过
原创

本文提供了一段完整的PHP代码,演示了如何生成测试用的JSON字符串、使用json_decode将其解码为数组,并通过遍历提取特定字段(如ID、价格等),最终输出结构化的数据结果。

PHP解析JSON的核心原理

在PHP开发中,处理JSON数据通常涉及两个关键步骤:
1. 解码(Decode):将JSON字符串转换为PHP变量(数组或对象)。
2. 编码(Encode):将PHP变量转换为JSON字符串。

本例主要侧重于前者,并包含了模拟数据生成的环节,适合初学者理解数据结构流转。

第1步:构建测试用JSON字符串

为了演示方便,我们先构造一段包含20条商品信息的JSON格式字符串。在实际业务中,这段数据可能来自API接口或文件读取。

  1. 初始化空字符串变量 $data。
  2. 使用循环拼接JSON对象数组结构。
  3. 注意JSON格式要求:字符串值需加双引号,数字不加;元素间用逗号分隔。
<?php
// 模拟生成 JSON 字符串
data = "[";
for ($i = 0; $i < 20; $i++) {
  $data.= "{";
  $data.= "\"id\":\"" . 110 . "\",";
  $data.= "\"name\":\"" . 110 . "\",";
  $data.= "\"original_price\":\"" . 110 . "\",";
  $data.= "\"sale_price\":\"" . 110 . "\",";
  $data.= "\"introduce\":\"" . 110 . "\",";
  $data.= "\"content\":\"" . 110 . "\",";
  $data.= "\"nums\":" . 110 . ""; // 注意 nums 是数值类型
  $data.= "}";
  if ($i < 19) { // 最后一个元素后不加逗号
    $data.= ",";
  }
}
$data.= "]";

第2步:使用 json_decode 解析为数组

调用 json_decode($json_string, true) 是最关键的步骤。第二个参数 true 表示强制返回关联数组(Associative Array),否则默认返回对象(Object),后续访问需用 -> 符号。

// 前提:$data 必须是合法的 JSON 格式
$de_json = json_decode($data, true);

// 检查是否解析成功(可选调试步骤)
// if (json_last_error() !== JSON_ERROR_NONE) {
//     echo 'JSON Error: ' . json_last_error_msg();
// }

第3步:遍历并提取目标字段

解析成功后,我们可以通过标准的数组索引方式获取内部数据。下面演示如何创建一个新数组 $array,仅提取 ID、名称和原价/现价信息。

$count_json = count($de_json); // 获取总数用于循环控制
for ($i = 0; $i < $count_json; $i++) {
  $array[$i]["id"] = $de_json[$i]['id'];
  $array[$i]["name"] = $de_json[$i]['name'];
  $array[$i]["original_price"] = $de_json[$i]['original_price'];
  
  // 注意:如果需要对数据进行二次序列化,可使用 json_encode
  $array[$i]["sale_price"] = json_encode($de_json[$i]['sale_price']);
}

第4步:验证输出结果

使用 var_dump() 可以查看变量的完整类型和结构。确保解析后的结构符合预期,特别是嵌套层级是否正确。

var_dump($array); // 输出最终的二维数组结构

常见问题与排查

  • JSON格式错误:如果在 json_decode 后得到 null,请检查 JSON 字符串是否符合标准(例如:键名必须加双引号,不能用单引号,且末尾不能有尾随逗号)。
  • 数据类型混淆:JSON中的数字会被转为PHP的 int/float,字符串转为 string。若混合类型需手动处理。
  • 内存溢出:当处理超大JSON文件时,建议使用流式解析器或分块加载,避免一次性将所有数据载入内存导致 OOM。

总结

通过上述步骤,我们完成了从模拟数据生成到最终数组提取的全过程。掌握 json_decode($str, true) 的使用是PHP后端处理数据交换的基础技能。以上就是PHP解析JSON数据方法的详细内容,更多关于PHP数据处理技巧的资料请关注本站其它相关文章!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表