ホームページ >バックエンド開発 >PHPの問題 >PHP での JSON および XML 形式の変換の紹介

PHP での JSON および XML 形式の変換の紹介

PHPz
PHPzオリジナル
2023-03-31 09:06:24796ブラウズ

開発プロセスでは、データ形式の変換がよく問題になります。 PHP で一般的に使用される 2 つのデータ形式は、JSON と XML です。 JSON は読み書きが簡単な軽量のデータ交換形式であり、XML は Web データ送信や構成ファイルの保存に広く使用されている拡張可能なマークアップ言語です。

この記事では、PHP で JSON 形式を XML 形式に変換する方法を紹介します。

1. JSON から XML への変換

PHP には、JSON データを XML 形式に変換するために使用できる関数 json_decode() が用意されています。構文は次のとおりです。

mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )

このうち、$json は変換対象の JSON 文字列を表し、$assoc は JSON オブジェクトを連想配列に変換するかどうかを表します (デフォルトは false)。$ Depth は最大値を表します再帰の深さ (デフォルトは 512 )、 $options は変換オプションを表します (デフォルトは 0)。

次は、JSON 配列を XML に変換する例です:

<?php
// JSON数据
$json_data = &#39;{
    "students": [
        {
            "name": "David",
            "age": 20,
            "score": {
                "English": 90,
                "Math": 85,
                "Chinese": 95
            }
        },
        {
            "name": "Tom",
            "age": 22,
            "score": {
                "English": 80,
                "Math": 75,
                "Chinese": 85
            }
        }
    ]
}&#39;;

// 将JSON数据转换成PHP数组
$php_data = json_decode($json_data, true);

// 将PHP数组转换成XML格式
$xml_data = new SimpleXMLElement(&#39;<?xml version="1.0" encoding="UTF-8"?><data></data>');
array_to_xml($php_data, $xml_data);

// 输出XML格式数据
header('Content-type: text/xml');
echo $xml_data->asXML();

// 将数组转换成XML格式的函数
function array_to_xml($arr, &$xml) {
    foreach ($arr as $key => $value) {
        if (is_array($value)) {
            if (!is_numeric($key)) {
                $subnode = $xml->addChild("$key");
                array_to_xml($value, $subnode);
            } else {
                array_to_xml($value, $xml);
            }
        } else {
            $xml->addChild("$key", htmlspecialchars("$value"));
        }
    }
}
?>

上記のコードは、まず JSON 文字列を PHP 配列に変換し、次に再帰関数を使用して PHP 配列を変換します。 XML 形式に変換します。

出力 XML 形式のデータは次のとおりです:

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <students>
    <0>
      <name>David</name>
      <age>20</age>
      <score>
        <English>90</English>
        <Math>85</Math>
        <Chinese>95</Chinese>
      </score>
    </0>
    <1>
      <name>Tom</name>
      <age>22</age>
      <score>
        <English>80</English>
        <Math>75</Math>
        <Chinese>85</Chinese>
      </score>
    </1>
  </students>
</data>

2. XML から JSON

XML 形式を JSON 形式に変換するには、まず XML を PHP 配列に変換する必要があります。次に、 json_encode() 関数を使用して、PHP 配列を JSON 文字列に変換します。 XML を JSON に変換する例を次に示します。

children() as $element) {
        if (count($element->children()) == 0) {
            $arr[$element->getName()] = strval($element);
        } else {
            $arr[$element->getName()][] = xml_to_array($element);
        }
    }
    return $arr;
}
?>

上記のコードは、最初に simplexml_load_string() 関数を通じて XML 文字列を SimpleXMLElement オブジェクトに変換し、次に再帰関数を通じて SimpleXMLElement オブジェクトを PHP 配列に変換します。関数。最後に、 json_encode() 関数を使用して、PHP 配列を JSON 文字列に変換します。

出力される JSON 形式のデータは次のとおりです。

{
  "students": [
    {
      "name": "David",
      "age": "20",
      "score": {
        "English": "90",
        "Math": "85",
        "Chinese": "95"
      }
    },
    {
      "name": "Tom",
      "age": "22",
      "score": {
        "English": "80",
        "Math": "75",
        "Chinese": "85"
      }
    }
  ]
}

概要

PHP には、JSON 形式から XML 形式へ、および XML 形式から JSON 形式へ変換するための便利な機能が用意されています。開発プロセス中に、実際のニーズに基づいて保存および交換に適切なデータ形式を選択することで、より優れたデータ送信および読み取り効果を実現できます。

以上がPHP での JSON および XML 形式の変換の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。