Reputation: 18929
In a Django view I am generating a data set something like this:
data = [22, 23, 18, 19, 21, None, 22, 20]
I am passing this data to a JavaScript variable using:
data_json = simplejson.dumps(data)
For use in a High Charts script.
Unfortunately JavaScript is stumbling when it encounters the None
value because actually what I need is null
. How can I best replace None
with null
, and where should I handle this - in the Django View or in the JavaScript?
Upvotes: 22
Views: 36254
Reputation: 51
When I tried the accepted solution json.dumps()
returned NaN values rather than the null JavaScript is looking for. Therefore I found another solution that does not use json or simplejson packages. The following solution uses type checking of None in Django. The solution that inspired me can be found here.
I used it in my code as follows to populate a Javascript array correctly:
[
{% for val in data %}
{% if val is none %}
null,
{% else %}
{{ val }},
{% endif %}
{% endfor %}
],
The none object in Django will check the None value offered by python. It doesn't seem to correctly handle np.NaN objects though.
Upvotes: 0
Reputation: 3216
If you're using Python 2.6 or later, you can use the built-in json module:
>>> import json
>>> json.dumps([1, 2, 3, None, 4])
'[1, 2, 3, null, 4]'
See http://docs.python.org/library/json.html
Upvotes: 40