Darwin Tech
Darwin Tech

Reputation: 18929

Convert Python None to JavaScript null

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

Answers (3)

Alexander Naumov
Alexander Naumov

Reputation: 1

in JS create a variable None wich is null

let None = null;

Upvotes: 0

Jipstuh
Jipstuh

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

Richard Connamacher
Richard Connamacher

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

Related Questions