A JSON file is a file that stores simple data structures and objects in JavaScript Object Notation (JSON) format, which is a standard data interchange format. It is primarily used for transmitting data between a web application and a server. A JSON object contains data in the form of a key/value pair. The keys are strings and the values are the JSON types. Keys and values are separated by a colon. Each entry (key/value pair) is separated by a comma. JSON files are lightweight, text-based, human-readable, and can be edited using a text editor.
Note: For more information, refer to Working With JSON Data in Python
XML is a markup language which is designed to store data. It is case sensitive. XML offers you to define markup elements and generate customized markup language. The basic unit in the XML is known as an element. The XML language has no predefined tags. It simplifies data sharing, data transport, platform changes, data availability Extension of an XML file is .xml
Note: For more information, refer to XML | Basics
Both JSON and XML file format are used for transferring data between client and server.
However, they both serve the same purpose though differ in their own way.
Comparison between JSON and XML
JSON |
XML |
JSON object has a type |
XML data is typeless |
JSON types: string, number, array, Boolean |
All XML data should be string |
Data is readily accessible as JSON objects |
XML data needs to be parsed |
JSON is supported by most browsers |
Cross-browser XML parsing can be tricky |
JSON has no display capabilities |
XML offers the capability to display data because it is a markup language |
JSON supports only text and number data type. |
XML support various data types such as number, text, images, charts, graphs, etc. It also provides options for transferring the structure or format of the data with actual data. |
Retrieving value is easy |
Retrieving value is difficult |
Supported by many Ajax toolkit |
Not fully supported by Ajax toolkit |
A fully automated way of deserializing/serializing JavaScript |
Developers have to write JavaScript code to serialize/de-serialize from XML |
Native support for object |
The object has to be express by conventions – mostly missed use of attributes and elements. |
It supports only UTF-8 encoding. |
It supports various encoding |
It doesn’t support comments. |
It supports comments. |
JSON files are easy to read as compared to XML. |
XML documents are relatively more difficult to read and interpret. |
It does not provide any support for namespaces |
It supports namespaces. |
It is less secured. |
It is more secure than JSON. |
Converting Xml to json
Method 1: Using xmltodict and json module
To handle the JSON file format, Python provides a module named json.
STEP 1: Install xmltodict module using pip or any other python package manager
pip install xmltodict
STEP 2: import json module using the keyword import
import json
STEP 3: Read the xml file here, “data_dict” is the variable in which we have loaded our XML data after converting it to dictionary datatype.
with open("xml_file.xml") as xml_file:
data_dict = xmltodict.parse(xml_file.read())
STEP 4: Convert the xml_data into a dictionary and store it in a variable JSON object are surrounded by curly braces { }. They are written in key and value pairs.
- json.loads() takes in a string and returns a json object.
- json.dumps() takes in a json object and returns a string.
- We use xml_data as input string and generate python object, so we use json.dumps()
json_data = json.dumps(data_dict)
Here, json_data is the variable used to store the generated object.
STEP 5: Write the json_data to output file
with open("data.json", "w") as json_file:
json_file.write(json_data)
Example:
XML File:

Python – XML to JSON
Python3
import json
import xmltodict
with open ( "test.xml" ) as xml_file:
data_dict = xmltodict.parse(xml_file.read())
json_data = json.dumps(data_dict)
with open ( "data.json" , "w" ) as json_file:
json_file.write(json_data)
|
Output:

xml to json
Method 2: Using the built-in Python module
XML File
Python3
import xml.etree.ElementTree as E
tree = E.parse( 'a.xml' )
root = tree.getroot()
d = {}
for child in root:
if child.tag not in d:
d[child.tag] = []
dic = {}
for child2 in child:
if child2.tag not in dic:
dic[child2.tag] = child2.text
d[child.tag].append(dic)
print (d)
|
Output:
{
'details':
[{'firstname': 'Shiv', 'lastname': 'Mishra', 'title': 'Engineer', 'division':
'Computer', 'building': '301', 'room': '11'},
{'firstname': 'Yuh', 'lastname': 'Datta', 'title': 'developer', 'division':
'Computer', 'building': '303', 'room': '02'},
{'firstname': 'Rahil', 'lastname': 'Khan', 'title': 'Tester', 'division':
'Computer', 'building': '304', 'room': '10'},
{'firstname': 'Deep', 'lastname': 'Parekh', 'title': 'Designer', 'division':
'Computer', 'building': '305', 'room': '14'}]
}
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!
Last Updated :
27 Feb, 2023
Like Article
Save Article