无法在包含XML作为值的已解析JSON文件中查看内容

时间:2013-03-31 17:06:49

标签: php xml json

我有一个像这样的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内容。请告诉我如何做到这一点?

2 个答案:

答案 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'];

working example

答案 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'];

?>