この記事では、Pythonを使用してJSONファイルとXMLファイルの変換、およびデータのマッピングを行う方法について詳しく解説します。具体的なコード例、その解説、そして応用例を含めています。
目次
はじめに
JSON(JavaScript Object Notation)とXML(eXtensible Markup Language)は、データの表現や転送によく使用される形式です。どちらもテキストベースで人間が読みやすく、また機械でも解析しやすい特長があります。しかし、それぞれ異なるシステムや用途でよく使われているため、変換やデータマッピングが必要な場合があります。
必要なパッケージ
この記事での実装例では、以下のPythonのパッケージが必要です。
- json
- xml.etree.ElementTree
JSONからXMLへの変換
基本のコード
以下にJSONからXMLへの基本的な変換コードを示します。
import json
import xml.etree.ElementTree as ET
# JSONデータを読み込む
with open('data.json', 'r') as f:
json_data = json.load(f)
# XMLのルート要素を作成
root = ET.Element('root')
# JSONデータをXMLに変換
for key, value in json_data.items():
child = ET.SubElement(root, key)
child.text = str(value)
# XMLデータを保存
tree = ET.ElementTree(root)
tree.write('data.xml')
コードの解説
import json
とimport xml.etree.ElementTree as ET
で必要なパッケージをインポートしています。- JSONデータは
with open('data.json', 'r') as f:
で読み込んでいます。 ET.Element('root')
でXMLのルート要素を作成しています。for key, value in json_data.items():
でJSONの各要素をXMLの子要素として追加しています。
補足: 辞書内のリスト
JSONデータが辞書内にリストを持っている場合、上記の基本コードでは対応できません。その場合は以下のようにします。
# 省略(上記と同じ部分)
# JSONデータをXMLに変換(リスト対応版)
for key, value in json_data.items():
if isinstance(value, list):
list_element = ET.SubElement(root, key)
for i, item in enumerate(value):
child = ET.SubElement(list_element, f'item_{i}')
child.text = str(item)
else:
child = ET.SubElement(root, key)
child.text = str(value)
応用例
例1: XMLからJSONへの変換
# XMLデータを読み込む
tree = ET.parse('data.xml')
root = tree.getroot()
# XMLデータをJSONに変換
json_data = {}
for child in root:
json_data[child.tag] = child.text
# JSONデータを保存
with open('data_from_xml.json', 'w') as f:
json.dump(json_data, f)
例2: JSONとXMLのデータマッピング
JSONとXMLのデータ形式が異なる場合、特定のマッピングルールに基づいて変換できます。
# JSONデータとXMLデータの読み込みは省略
# マッピングルール
mapping_rule = {
'name_json': 'name_xml',
'age_json': 'age_xml'
}
# マッピングに基づいてJSONデータをXMLに変換
root = ET.Element('root')
for json_key, xml_key in mapping_rule.items():
child = ET.SubElement(root, xml_key)
child.text = str(json_data[json_key])
# XMLデータを保存
tree = ET.ElementTree(root)
tree.write('mapped_data.xml')
まとめ
Pythonを使用してJSONとXMLの変換、およびデータのマッピングが簡単に行えることを示しました。実際のプロジェクトに応用する際は、必要なパッケージをインストールし、適切なマッピングルールを設定してください。
コメント