Support
Please support this website. Visit the Amazon using this affiliate link. There won't be any difference in your purchage, we will get some commission for every purchase you make.
Advertise with us
json   1   18577
Python Script 3: Validate, format and Beautify JSON string Using Python

As per official JSON website, JSON is a light-weight data interchange format. It is easy for humans to read and write.

It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999.

In this small article we will see how to validate and format the JSON string using python.


Format JSON string:

import json

json_string =  '{"first_name": "Anurag", "last_name":"Rana", "key3": {"key1":"key2"}}'

try:
    parsed_json = json.loads(json_string)
    print(json.dumps(parsed_json, indent = 4,sort_keys=False))
except Exception as e:
    print(repr(e))


output:

rana@Brahma: scripts$ python3 jsonParse.py 
{
    "first_name": "Anurag",
    "last_name": "Rana",
    "key3": {
        "key1": "key2"
    }
}
rana@Brahma: scripts$ 


Parameter indent  decides the number of spaces to use for indentation.  

Parameter sort_keys decides whether the keys in formatted JSON should be in sorted order or not. Default value is False.  



Format JSON file:

We can use same code to format and validate the JSON file. Place a .json file with below content in current working directory.

{"a": "b","c": "d","e": ["f","g","h"]}


Now use this piece of code to format the json file.

import json

json_string = None

with open("json_file.json") as f:
    json_string = f.read()
try:
    parsed_json = json.loads(json_string)
    formatted_json = json.dumps(parsed_json, indent = 4,sort_keys=True)
    with open("json_file.json","w") as f:
        f.write(formatted_json)
except Exception as e:
    print(repr(e))
 

Error in JSON validation:

Any error in JSON string will be reported with exact location in string. For example, a comma is missing in below JSON string.

import json

json_string =  '{"first_name": "Anurag" "last_name":"Rana", "key3": {"key1":"key2"}}'

try:
    parsed_json = json.loads(json_string)
    print(json.dumps(parsed_json, indent = 4,sort_keys=True))
except Exception as e:
    print(repr(e))


output:

JSONDecodeError("Expecting ',' delimiter: line 1 column 25 (char 24)",)


Bonus: You can pretty-print the small JSON string directly at command terminal without using python script file. Use below line of code.

echo '{"first_name": "Anurag", "last_name": "rana"}' | python -m json.tool


output:

{
    "first_name": "Anurag",
    "last_name": "rana"
}
 

You can add this crome app to your browser to validate and beautify the JSON strings.


Hosting Django App on PythonAnyWhere server.

json   1   18577
1 comment on 'Python Script 3: Validate, Format And Beautify Json String Using Python'
Login to comment

Alex Oct. 23, 2019, 5:15 p.m.
Just missing a check on duplicate keys, e.g.:{"first_name": "Anurag", "last_name": "rana", "first_name": "Sita"}works fine, but should raise an error like:SyntaxError: Duplicate key 'first_name' on line 4or not? Please let me know how I can receive such an error.
DigitalOcean Referral Badge

© 2022-2023 Python Circle   Contact   Sponsor   Archive   Sitemap