从 JSON 检索数据



我有一个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 是正确的。

最新更新