Programster's Blog

Tutorials focusing on Linux, programming, and open-source

Python and JSON

The main things to know when working with JSON are:

  • import with import json
  • json.dumps(arg) will return a JSON string based on arg
    • json.dumps will accept:
      • lists
      • tuples
      • dictionaries
    • json.dumps will not accept
      • sets
      • ranges
  • json.loads(stringArg) can be used to convert a JSON string to a python object.
    • lists and tuples encode to JSON arrays, but always decode back to lists.
    • JSON objects convert back to dictionaries.

Even though json.dumps does not accept sets and ranges, you can work around this by converting them to lists as shown below.

Encoding Demo

Below is a demo of outputting various types to JSON.

import json

# List example
myList = ['a', 'b', 'c']
myListAsString = json.dumps(myList)
print(myListAsString) # prints ["a", "b", "c"]

# Tuple example
myTuple = ('a', 'b', 'c')
myTupleAsString = json.dumps(myTuple)
print(myTupleAsString) # prints ["a", "b", "c"]

# Dictionary example
myDict = {'jack': 4098, 'sape': 4139}
myDictAsString = json.dumps(myDict)
print(myDictAsString) # prints {"jack": 4098, "sape": 4139}

# Range example
myRange = range(1,10,1)
myRangeAsList = list(myRange) # convert to list for json
myRangeAsString = json.dumps(myRangeAsList)
print(myRangeAsString)

# Set Example
mySet = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
mySetAsList = list(myRange) # convert to list for json
mySetAsString = json.dumps(mySetAsList)
print(mySetAsString)

Decoding Demo

import json

myJsonString = '["a", "b", "c"]'
myObj = json.loads(myJsonString)
print(myObj) # prints the list ['a', 'b', 'c']

myJsonString = '{ "myArray" : ["a", "b", "c"] }'
myObj = json.loads(myJsonString)
print(myObj) # prints {'myArray': ['a', 'b', 'c']}

Conclusion

We have covered the basics with working with JSON in Python. There are more methods that the json library provides which you can read about here.

Last updated: 25th March 2021
First published: 16th August 2018

This blog is created by Stuart Page

I'm a freelance web developer and technology consultant based in Surrey, UK, with over 10 years experience in web development, DevOps, Linux Administration, and IT solutions.

Need support with your infrastructure or web services?

Get in touch