我有一个XML,我把它解析成一个JSON,然后把它放到一个数组中。所以我得到了以下内容:
{
"result": {
"stats": {
"count":"0"
}
}
}
但是尝试以下方法时,我无法从数组中检索数据:
$yummy = json_decode($json);
echo $yummy->count; //0
谢谢你的帮助
该函数json_decode返回一个混合变量,您可以通过传递第二个参数 true 来强制它返回关联数组:
$yummy = json_decode($json, true);
然后你可以像在数组中一样访问你的值:echo $yummy['result']['stats']['count'];
对象只有一个属性,它被称为result
而不是count
。
您无法从顶层访问数据结构中的任何点的随机属性。您必须通过要访问的数据的所有祖先进行工作。
将 XML 转换为 JSON 意味着您将丢失信息和功能。实际上,不需要转换。SimpleXML提供了类似的语法,而对于DOM,您可以使用Xpath表达式。
$xml = <<<'XML'
<response>
<result>
<stats>
<count>21</count>
</stats>
</result>
</response>
XML;
// SimpleXML maps elements to properties
$response = new SimpleXMLElement($xml);
var_dump(
(int)$response->result->stats->count
);
// DOM can use Xpath expressions to extract values
$document = new DOMDocument();
$document->loadXml($xml);
$xpath = new DOMXpath($document);
var_dump(
$xpath->evaluate('number(/response/result/stats/count)')
);
输出:
int(21)
float(21)
您可以使用一些在线 json 验证器来确保解析的 json 是正确的。