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. The default value is False
.
Format JSON file:
We can use the same code to format and validate the JSON file. Place a .json file with below content in the 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.
Originally published at www.pythoncircle.com.
More from https://www.pythoncircle.com
Top comments (0)