【问题标题】:Convert Python None to JavaScript null将 Python None 转换为 JavaScript null
【发布时间】:2012-04-14 09:24:04
【问题描述】:

在 Django 视图中,我正在生成一个类似这样的数据集:

data = [22, 23, 18, 19, 21, None, 22, 20]

我正在将此数据传递给 JavaScript 变量,使用:

data_json = simplejson.dumps(data)

用于高图表脚本。

不幸的是,当 JavaScript 遇到 None 值时会出现问题,因为实际上我需要的是 null。我怎样才能最好地将None 替换为null,我应该在哪里处理这个问题——在Django 视图中还是在JavaScript 中?

【问题讨论】:

标签: javascript python django


【解决方案1】:

当我尝试接受的解决方案 json.dumps() 返回 NaN 值而不是 JavaScript 正在寻找的空值时。因此,我找到了另一个不使用 json 或 simplejson 包的解决方案。以下解决方案在 Django 中使用 None 的类型检查。启发我的解决方案可以在here找到。

我在我的代码中使用它来正确填充 Javascript 数组:

[
{% for val in data %}
     {% if val is none %}
         null,
     {% else %}
         {{ val }},
     {% endif %}
{% endfor %}
],

Django 中的 none 对象将检查 python 提供的 None 值。不过,它似乎无法正确处理 np.NaN 对象。

【讨论】:

    【解决方案2】:

    如果您使用的是 Python 2.6 或更高版本,则可以使用内置的 json 模块:

    >>> import json
    >>> json.dumps([1, 2, 3, None, 4])
    '[1, 2, 3, null, 4]'
    

    http://docs.python.org/library/json.html

    【讨论】:

    • 甚至更新版本的 simplejson 也可以。
    • 那行得通。不知道为什么 simplejson 不这样做。与 Django 中的 simplejson 相比,使用 json 有什么缺点吗?
    • 好的 - 现在 simplejson 似乎可以...
    • 我自己从未运行过任何基准测试来比较它们,但在stackoverflow.com/questions/712791/… 人们说 simplejson 更快。 (当然,如果您需要与 Python 2.5 兼容,内置的 json 模块已经过时了。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2016-06-25
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多