XML vs. JSON
The discussion about XML and JSON is as old as the internet itself. If you Google XML vs. JSON
you will get about 2.2 million results. And here is mine - a comparison of the parsing speed of JAXB, GSON and Jackson.
XML
XML holds data between named nodes which could have attributes, too. Each node can hold child nodes or some data. A typical XML file would look like this:
Jon Doe
XML itself is pretty simple, but comes with a totally over engineered ecosystem. There exists different types of validation schemes, query languages, transformation languages and weird dialects. If you had an XML course during your studies, the most difficult part was to instantiate the XML parser in Java (File > DocumentBuilderFactory > DocumentBuilder > Document > Element
).
JSON
JSON holds data as JavaScript objects. It has two types of notations: lists enclosed in [...]
and objects enclosed in {...}
. The document from above could look like this:
{ “name”: “math”, “students”: [ { “name”: “Jon Doe” } ] }
Compared to XML, JSON is more lean and lightweight. The format contains less clutter and there are not as much tools as for XML (e.g. not query or transformation languages).
Parsing Speed Test
Since JSON is a leaner format, I was wondering if a JSON file could be parsed faster than an equivalent XML file. In the end, both formats contain the same data in a hierarchical representation of nodes and elements. So is there any difference?
Test data
I create a simple test data. A class called Course
could hold a list of Student
objects and Topic
objects. Each object has some properties such as a name. Before each test, I create a new Course
object fill with random values. I made my tests with 200, 2.000, 20.000, 100.000 and 200.000 students/topics and repeated each test 500 times.
Candidates
##
JAXB | XML | Java | official Java Architecture for XML Binding | Maven |
GSON | JSON | Java | by Google | Maven |
Jackson | JSON | Java | open source project | Maven |
JSON writes faster, a little
The first result of my tests was that Jackson (JSON) writes data a little bit faster than JAXB (XML) and GSON (JSON). The difference is not that big
JSON reads faster, a lot
More interesting was the fact that both JSON implementation (Jackson and GSON) read data much faster than JAXB.
JSON files are smaller
OK, this one is a no-brainer, but JSON files are (of course) smaller than XML files. In my example, the JSON file was about 68% of the size of the corresponding XML file. However, this highly depends on you data. If the data inside the nodes is large, the overhead of the XML tags is not as much as for very small data (e.g. <number>5</number>
). The file generated by GSON has of course the same size as the file generated by Jackson.
Best regards, Thomas