我使用NodeJS創建了一個API。每個請求都會返回一個JSON。有些請求調用python腳本,我想將由python生成的JSON發送給用戶。該代碼將如下所示:NodeJS從python流式傳輸JSON
child = child_process.spawn(cmd, args);
child.stdout.on('data', (chunk) => {
res.write(chunk);
});
child.on('error', function(err) {
res.status(500).json({...});
});
child.on('close', (code) => {
res.end();
});
此代碼的問題是,我無法檢查如果python輸出是JSON。也許python寫警告,錯誤...
我能做些什麼來防止用戶會得到不同於JSON的東西?
編輯
現在我的代碼是:
var output = [];
command.stdout.on('data', (chunk) => {
output.push(chunk)
});
command.on('close', (code) => {
var stdout = output.join('');
json_cmd = tryParseJSON(stdout)
if (json_cmd)
res.send(json_cmd)...
});
不過,我不希望加載所有的標準輸出中的變量。但如果我不這樣做,我可以檢查標準輸出是否是JSON。 我可以強制python打印只是json嗎?。總是使用json.dumps和全局try catch就足夠了?
謝謝。
只需檢查它是否爲JSON,'stdout'是一個字符串,所以用'JSON.parse'解析它。如果失敗,它不是JSON結構 – Yerken
chunk包含stdout的一部分。所以,也許它不是JSON。 chunk1 = {...'color':'bl; chunk2 = ue'...; chunkN = ...}。 –