In this post:

Python JSON file to dictionary

Reading and parsing JSON files is very common operation in Python world. Python offers several different solution. Example below show simple converting of JSON file to dictionary using method from module JSON:

json.loads

Example:

import json

jsonFile = open("/home/user/sample.json")
jsonString = jsonFile.read()
jsonData = json.loads(jsonString)
type(jsonData)
print(jsonData['menu'])

result:

{u'popup': {u'menuitem': [{u'onclick': u'CreateNewDoc()', u'value': u'New'}, {u'onclick': u'OpenDoc()', u'value': u'Open'}, {u'onclick': u'CloseDoc()', u'value': u'Close'}]}, u'id': u'file', u'value': u'File'}

Python JSON string to dictionary

Sometimes the JSON is received in string format. This is a bit different from reading JSON file. Example below shows converting JSON string to a dictionary which is done by:

json.loads

Example:

import json

jsonString = """{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}"""
jsonData = json.loads(jsonString)
type(jsonData)
print(jsonData['menu'])

result:

{u'popup': {u'menuitem': [{u'onclick': u'CreateNewDoc()', u'value': u'New'}, {u'onclick': u'OpenDoc()', u'value': u'Open'}, {u'onclick': u'CloseDoc()', u'value': u'Close'}]}, u'id': u'file', u'value': u'File'}

Python JSON to list

Arrays and Lists are allowed to be used in JSON. In order to retrieve list from JSON structure you need to use access operator. So if your JSON containing objects which are Arrays / List you can access them by:

jsonlist = jsonData['list']

Example:

import json

jsonData = '{"list": ["java", "python", "groovy", "ruby"]}'
jsonData = json.loads(jsonData)
jsonlist = jsonData['list']
print (jsonlist)

result:

[u'java', u'python', u'groovy', u'ruby']

Python JSON to string

Converting JSON string can be done by two methods:

  • json.dumps() - preferred way for conversion. Always produce valid JSON string
  • str() - could produce invalid JSON string for some values

Example:

import json

jsonFile = open("/home/user/sample.json")
jsonString = jsonFile.read()

print(json.dumps(jsonData))
print(str(jsonData))

print(jsonData['menu'])

result:

#json.dumps(jsonData)
{"menu": {"popup": {"menuitem": [{"onclick": "CreateNewDoc()", "value": "New"}, {"onclick": "OpenDoc()", "value": "Open"}, {"onclick": "CloseDoc()", "value": "Close"}]}, "id": "file", "value": "File"}}

# str(jsonData)
{u'menu': {u'popup': {u'menuitem': [{u'onclick': u'CreateNewDoc()', u'value': u'New'}, {u'onclick': u'OpenDoc()', u'value': u'Open'}, {u'onclick': u'CloseDoc()', u'value': u'Close'}]}, u'id': u'file', u'value': u'File'}}}

Error 'module' object has no attribute 'loads'

This error:

Error 'module' object has no attribute 'loads'

can appear in your code if you name your file : json.py. And this will interfere with the import causing the error:

import json