我有一个像这样的JSON文件:
test.json
{
"barcode": {
"message": "<?xml version=\"1.0\" encoding = \"utf-8?\"><PrintLetterBarcodeData name=\"ABCD \" gender=\"FEMALE\" yob=\"1964\"/>",
"format": "PKBarcodeFormatQR",
"messageEncoding": "iso-8859-1"
}
}
和这样的PHP文件:
test.php的
<?php
$JSON = file_get_contents('test.json');
$json_object = json_decode($JSON);
print_r($json_object);
?>
我正在尝试读取“条形码”下的“消息”键的值。我得到一个空字符串。这是我打印对象时得到的结果。
stdClass对象([条形码] =&gt; stdClass对象([消息] =&gt; [格式] =&GT; PKBarcodeFormatQR [messageEncoding] =&gt; iso-8859-1))
JSON很好,消息有XML内容。我需要在PHP中阅读XML内容。请告诉我如何做到这一点?
答案 0 :(得分:2)
引用对象中的消息可以正常工作:
echo $json->barcode->message;
虽然读了你的问题,但我认为你没有说清楚你的问题是什么。如果您在使用PHP读取XML对象时遇到问题,那是因为您的XML无效。声明中有一个拼写错误 - 请参阅下面的前后:
<?xml version=\"1.0\" encoding = \"utf-8?\">
<?xml version=\"1.0\" encoding = \"utf-8?\"?>
^
Missing character
为了完整性...那么您可以简单地使用simplexml_load_string
将消息对象解析为PHP变量并引用属性,如下所示:
$json = json_decode($json);
$xml = simplexml_load_string($json->barcode->message);
echo $xml['name'].' '. $xml['gender'].' '. $xml['yob'];
答案 1 :(得分:1)
这是您在json_decode中使用第二个可选参数的地方:http://php.net/manual/en/function.json-decode.php
<?php
$JSON = file_get_contents('test.json');
$json_object = json_decode($JSON, true);
print_r($json_object);
echo $json_object['barcode']['message'];
?>