Flask请求非常大时,JSON中出现随机不正确逗号

问题描述

我正在尝试从Flask发送json到NodeJS并响应pdf。 json包含用于使步行收集器使用收据所必需的数据,其基本结构如下所示:

{"list":[{"user":"user1","month":"11/2020"},{"user":"user1","month":"12/2020"}],qid:"query_id"}

这很好用,但只有当json足够小(内部列表中约有500个元素)时,如果我要传递更多的元素(如600/700),它将破坏以下内容

SyntaxError: Unexpected token,in JSON at position 98224

在JSONLint旅行之后,在列表中找到了罪魁祸首:

{ "NOMBRE": "JUAN ","NROSOCIO": 2706,"DIRECCION": "fake_street 587 ","RECARGO": 0,"IMPORTE": 50,"PERIodo": "12/2020","BARCODE": "027061220201000050.0","COBRADOR",: "1" }

问题是,:之前的随机COBRADOR,但我不知道为什么(一致地)存在

我尝试过的事情

  • 用静态值替换所有数据
  • 不将“ COBRADOR”元素放入json中(逗号仍会消失)
  • 在Node中解析之前将缓冲区转换为字符串

用于生成json的Python代码

        for socio in db.session.query(socios).filter(socios.COBRADOR == cobrador).all():
       
        mes =  int(mesi)
        año = int(añoi)
        for i in range(meses):

            barcode = cuponificador(str(socio.NROSOCIO),5)+cuponificador(str(mes),2)+str(año)+str(socio.COBRADOR)+cuponificador(str(importe),8)
            
            periodo = str(mes)+"/"+str(año)
            ret.append(({"NOMBRE":socio.NOMBRE,"NROSOCIO":socio.NROSOCIO,"DIRECCION":socio.DIRECCION,"RECARGO":ceil(float(recargo)),"IMPORTE":ceil(float(importe)),"PERIodo":periodo,"BARCODE":barcode,"COBRADOR":cobrador}))
            mes = mes + 1
            if (mes == 13):
                mes = 1
                año = año + 1
    
    req = requests.post("http://localhost:3000/",json= ({"list":ret,"tipo":"socios"}))

NodeJs代码

const server = http.createServer((req,res) => {
let data = []
req.on('data',chunk => {
    data.push(chunk)
})
req.on('end',() => {
    console.log("LLego pedido")
    console.log(data.toString('utf8'))
    jason = JSON.parse(data.toString('utf8')) //here breaks
    //jason = JSON.parse(data) //also tried this
    cupones = jason.list
    tipo = jason.tipo

    make(cupones,tipo).then(function() {
      var file = fs.createReadStream('./document.pdf');
      file.on('open',function () {
        var stat = fs.statSync('./document.pdf');
        res.statusCode = 200;
        res.setHeader('Content-Length',stat.size);
        res.setHeader('Content-Type','application/pdf');
        file.pipe(res);
      });
    })
   

    })});

为什么这些逗号出现并且如何制止它?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)