0

次のような 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 [メッセージ エンコーディング] => iso-8859-1 ) )

JSON は適切で、メッセージには XML コンテンツが含まれます。その XML コンテンツを PHP で読み取る必要があります。どうすればそれができるか教えてください。

4

2 に答える 2

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

実施例

于 2013-03-31T18:44:52.457 に答える