Weekly letter pythonprogramming.email
Hi,
To get the curated list of awesome python articles from all over the Internet, please subscribe with pythonprogramming.email. This is specifically suitable for beginners.
Advertise with us
json   1   9463
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   9463

1 thought on 'Python Script 3: Validate, Format And Beautify Json String Using Python'
Alex :
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.

Leave a comment:


*All Fields are mandatory. **Email Id will not be published publicly.

SUBSCRIBE
Please subscribe to get the latest articles in your mailbox.

© 2017-2020 Python Circle   Contact   Sponsor   Archive   Sitemap