You shouldn't call you're variable as json. This caused the mistake.
Do something like:
import json
not_json = open('file.json')
data = json.load(not_json)
Or even better:
with open('file.json') as input_file:
data = json.load(input_file)
[edit]
To address to what commented below, when you declare something like:
import json
json = 2
the word json now points to a number , and you lose the name of the imported package. This is true unless you declare it in a different scope (inside a function for example).
Best practice: Try to avoid naming vars / function / classes etc in names which are built-ins, known packages etc (like: list = 2; list([1,2,3]))