Django load local json file


Question

I have an ajax view:

def ajax_prices(request):
    data = {'data':'data'}
    return HttpResponse(json.dumps(data), mimetype='application/json')

I want to test this with a local json file (prices.json). How can I import a local json file?

Local json file 'prices.json'

{"aaData": [
[1, "70.1700", "2008-12-29 11:23:00"],
[2, "70.2600", "2008-12-29 16:22:00"],
[3, "70.6500", "2008-12-30 11:30:00"],
[4, "70.8700", "2008-12-30 16:10:00"],
[5, "70.5500", "2009-01-02 11:09:00"],
[6, "70.6400", "2009-01-02 16:15:00"],
[7, "70.6500", "2009-01-05 11:17:00"]
]}

I can't do that with:

data = '/static/prices.json'
1
13
5/8/2012 12:04:25 PM

Accepted Answer

Use the json module:

import json

json_data = open('/static/prices.json')   
data1 = json.load(json_data) # deserialises it
data2 = json.dumps(data1) # json formatted string

json_data.close()

See here for more info.

As Joe has said, it's a better practice to use fixtures or factories for your test data.

28
2/24/2019 6:01:30 AM

The trick here is to use python's built-in methods to open that file, read its contents and parse it using the json module

i.e.

import json

data = open('/static/prices.json').read() #opens the json file and saves the raw contents
jsonData = json.loads(data) #converts to a json structure

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow
Icon