Blog available for sell
This blog is available for sale. Please 'contact us' if interested.
Advertise with us
json   1   18788
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   18788
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