无法看到包含XML的解析的JSON文件内容为值

问题描述:

我有一个JSON文件是这样的:无法看到包含XML的解析的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的对象([条形码] => stdClass的对象([消息] => [格式] => PKBarcodeFormatQR [messageEncoding] => ISO-8859-1))

JSON是好,消息具有XML内容。我需要阅读PHP中的XML内容。请让我知道我该怎么做?

+1

天色渐打印。由于它是xml内容,因此浏览器中没有显示任何内容。感谢您的答案。 –

引用的对象的消息工作正常:

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

这是你使用第二个可选参数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']; 

?>