javascript - HTML/Chart JS 从 Python Flask 反序列化 JSON

标签 javascript python html json chart.js

我正在尝试将一个对象返回给 Chart JS 应用程序。数据最初来自 pandas 中的数据框。

所以这是生成的原始对象。

{'datasets': [{'label': 'Door_08', 'data': [{'x': Timestamp('2018-10-23 00:22:43'), 'description': 'Stats: PSN:17019 PNR:0 PER:0 BFL:0 MID:17365 UER:0 WSC:1 NCL:0 NIN:0 NWI:0 WCC:1 CCC:1 LRS:-65 RLC:1145256517', 'y': 1}, ...

但是,pandas Timestamp 出现了一些问题。所以,我通过将对象转换为 JSON 来处理它,从 this answer 获得.

现在看起来:

{"datasets": [{"label": "Door_08", "data": [{"x": "2018-10-23 00:22:43", "description": "Stats: PSN:17019 PNR:0 PER:0 BFL:0 MID:17365 UER:0 WSC:1 NCL:0 NIN:0 NWI:0 WCC:1 CCC:1 LRS:-65 RLC:1145256517", "y": 1}, ...

但是我仍然看不到我的图表。检查页面:

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
    type: 'line',
    data: "{"datasets": [{"label": "Door_08", "data": [{"x": "2018-10-23 00:22:43", "description": "Stats: PSN:17019 PNR:0 PER:0 BFL:0 MID:17365 UER:0 WSC:1 NCL:0 NIN:0 NWI:0 WCC:1 CCC:1 LRS:-65 RLC:1145256517", "y": 1}, 

所以我猜它没有被正确解码?

这就是我获取对象的方式:

var ctx = document.getElementById("myChart").getContext('2d');
var myChart = new Chart(ctx, {
    type: 'line',
    data: "{{ object_returned }}",

我的字符集:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>{{ title }}</title>
  <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet">
  <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.bundle.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
</head>

和我的 Flask 后端:

@app.route('/logs', methods=['GET', 'POST'])
def eventlogs():
    # Do something
    return render_template('logs.html', error=error, form=form, object_returned=object_returned)

如何正确反序列化对象?

最佳答案

将 tojson 过滤器应用于 object_returned:

var myChart = new Chart(ctx, {
    type: 'line',
    data: "{{ object_returned|tojson|safe }}",
    ...

关于javascript - HTML/Chart JS 从 Python Flask 反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53088404/

相关文章:

javascript - 难以应用两个不同的脚本

python - 谷歌日历 API : 403 Calendar Usage Limits Exceeded

python - 使用 Django 的评论框架计算 `models.py` 中每个对象的评论

javascript - window.print() 是否适用于 iPad 上所有版本的 Safari?

javascript - 计算有多少文件附加到许多输入

javascript - 未调用地理编码回调

javascript - Backbone/underscore.js json 到带有每个循环的模板

python - 导入 numpy 而不安装

javascript - 在 Magento 中为单选框添加标签

javascript - 单击按钮时如何调用此函数? (Javascript、XSLT、XML、HTML)