You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

出现htmlspecialchars()参数错误,如何提取JSON中Credits字段值?

问题解决方法

错误原因

你遇到的报错和无法获取值有两个核心问题:

  1. json_decode() 默认返回对象而非数组,用数组下标 ['Data'] 访问对象属性会触发类型错误;
  2. 返回数据里的 Data 是一个数组(包含单个元素),不能直接通过 ['Credits'] 访问,需要先取数组的第一个元素。

修复方案

提供两种可行的写法:

方案1:转为关联数组访问

给 json_decode() 传入第二个参数 true,将JSON转为关联数组,再按数组层级访问:

$get_balance = '{"ErrorCode":0,"ErrorDescription":"Success","Data":[{"PluginType":"SMS","Credits":"৳48.959915"}]}';
$balance = json_decode($get_balance, true); // 第二个参数true转为关联数组
echo $balance['Data'][0]['Credits']; // 先取Data数组的第一个元素,再取Credits

方案2:对象方式访问

保持 json_decode() 默认返回对象,使用对象属性访问符 ->,同时注意Data是数组,需先取索引0:

$get_balance = '{"ErrorCode":0,"ErrorDescription":"Success","Data":[{"PluginType":"SMS","Credits":"৳48.959915"}]}';
$balance = json_decode($get_balance);
echo $balance->Data[0]->Credits; // 对象属性访问+数组索引

额外提示

如果你的原始返回数据包含HTML标签(比如<p>、<pre>),需要先提取出<code>标签内的JSON字符串,再进行解码,否则会导致JSON解析失败。可以用DOM解析提取核心JSON内容:

// 假设原始返回内容是$html
$dom = new DOMDocument();
$dom->loadHTML($html);
$codeTags = $dom->getElementsByTagName('code');
$jsonStr = $codeTags->item(0)->nodeValue; // 提取code标签内的JSON
$balance = json_decode($jsonStr, true);
echo $balance['Data'][0]['Credits'];

内容的提问来源于stack exchange,提问作者yasin konok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 06:19:58