问题描述
我正在尝试从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中解析之前将缓冲区转换为字符串
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 (将#修改为@)