如何将多维数组编码为JSON?

时间:2019-06-05 12:41:45

标签: python json angular typescript

我正在尝试将多维数组作为JSON发送到我的Python后端。 该数组存储在画布上绘制的点,并将用于对其执行一些计算。我该如何编码数据?

我尝试在数组上使用函数JSON.stringify,但仍无法在后端获取数据。

后端功能,在本地主机端口5000上运行:

@app.route('/canvas-roi', methods=['POST'])
def canvasRoi():
    print(request.body)

存储数据的数组并插入示例:

private points = [];
points.push([1, 2]);
points.push([3, 4]);

前端函数将数组作为JSON发送到后端:

onUpload(){
      var output = {};
      for(var i = 0; i<this.points.length; i++) output[i] = this.points[i];
      this.http.post("http://localhost:5000/canvas-roi", JSON.stringify(output)).subscribe(res => {console.log(res);});

    }

我希望后端接收JSON并在控制台中打印。但是,在后端,实际输出是

  

AttributeError:'Request'对象没有属性'body'

  

127.0.0.1--[05 / Jun / 2019 17:10:59]“ POST / canvas-roi HTTP / 1.1” 500-

在前端,错误消息是:

  

POST http://localhost:5000/canvas-roi 500(内部服务器错误)

我知道错误一定与我如何创建邮寄请求有关,但我不知道如何解决该问题。

2 个答案:

答案 0 :(得分:1)

问题既与我创建帖子请求的方式有关,也与我尝试提取它的方式有关。以下代码解决了该问题:

后端功能:

@app.route('/canvas-roi', methods=['POST'])
def canvasRoi():
    data = request.json

前端功能:

onUpload(){
    let requestOptions = {headers: new HttpHeaders({'Content-Type':  'application/json'})};
    this.http.post("http://localhost:5000/canvas-roi", this.points, requestOptions);
}

答案 1 :(得分:0)

您正在加载表单数据,但正在发送JSON。这与您的问题有关吗? How to receive json data using HTTP POST request in Django 1.6?