在PHP中提取JSON数据元素遇问题,附示例JSON寻求解决办法
解决PHP提取JSON数据元素的问题
别担心,我一步步带你把这个JSON里的内容拆出来!先看看你给的示例JSON(我先把末尾的省略号补全成合法格式,避免解析报错):
{ "status": "400", "msg": "List Of Lotteries", "lotteryRes": { "result": { "Disawar": [ "Disawar" ], "DL Bazzar": [ "DL Bazzar" ], "Faridabad": [ "Faridabad" ], "Gaziyabad": [ "Gaziyabad" ], "X90": [ "X90" ], "Gali": [ "Gali" ], "RAJASTHAN ROYAL": [ "RAJASTHAN ROYAL" ], "Rajasthan Bazaar": [ "Rajasthan Bazaar" ] }, "lottery_date": [ "2018-03-25 05:30:00", "2018-03-31 15:20:00", "2018-03-30 18:15:00", "2018-03-31 10:00:00" ] } }
PHP里处理JSON核心就是用json_decode()函数,把JSON字符串转成PHP能直接操作的关联数组(或者对象,我个人更推荐数组,键值对操作更直观)。下面是完整的可运行示例代码:
// 假设你的JSON数据存储在这个变量里(实际场景可能是接口返回的字符串) $jsonStr = '{"status":"400","msg":"List Of Lotteries","lotteryRes":{"result":{"Disawar":["Disawar"],"DL Bazzar":["DL Bazzar"],"Faridabad":["Faridabad"],"Gaziyabad":["Gaziyabad"],"X90":["X90"],"Gali":["Gali"],"RAJASTHAN ROYAL":["RAJASTHAN ROYAL"],"Rajasthan Bazaar":["Rajasthan Bazaar"]},"lottery_date":["2018-03-25 05:30:00","2018-03-31 15:20:00","2018-03-30 18:15:00","2018-03-31 10:00:00"]}}'; // 转成关联数组,第二个参数设为true是关键! $data = json_decode($jsonStr, true); // 提取顶层的简单元素 echo "状态码: " . $data['status'] . "<br>"; echo "提示信息: " . $data['msg'] . "<br>"; // 提取所有彩票名称(lotteryRes下的result节点) $lotteryList = $data['lotteryRes']['result']; echo "<h3>所有彩票名称:</h3>"; foreach ($lotteryList as $key => $value) { // 这里的value是数组格式,比如["Disawar"],直接取第一个元素即可 echo "- " . $value[0] . "<br>"; } // 提取所有彩票日期 $lotteryDates = $data['lotteryRes']['lottery_date']; echo "<h3>彩票日期列表:</h3>"; foreach ($lotteryDates as $date) { echo "- " . $date . "<br>"; }
几个关键注意事项:
- 必须保证JSON格式完全合法!你提供的示例里
lottery_date末尾有个...,实际使用时一定要删除这类无效字符,否则json_decode()会返回null导致解析失败。 - 如果想要用对象方式访问(而非数组),可以去掉
json_decode的第二个参数,访问语法就变成$data->status、$data->lotteryRes->result,两种方式都可行,根据习惯选择即可。 - 为了避免报错,建议对可能不存在的节点做判断,比如用
isset($data['lotteryRes']['result'])确认节点存在后再操作。
这样你就能轻松提取到JSON里的任何元素啦!
内容的提问来源于stack exchange,提问作者user8910784
相关产品推荐
相关产品推荐

