NodeJSでAPIを作成しています。リクエストごとにJSONが返されます。いくつかのリクエストはpythonスクリプトを呼び出し、Pythonで生成されたJSONをユーザーに送信したいとします。コードは次のようになります:PythonからのNodeJSストリーミング
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)...
});
しかし、私は、変数内のすべての標準出力をロードする必要はありません。今の私のコードがある
EDIT
。しかし、私はそれをしない場合、私はstdoutがJSONかどうかを確認することができます。 pythonにjsonだけを強制的に印刷させることはできますか?。常にjson.dumpsとグローバルなtry catchを使用すれば十分でしょうか?
ありがとうございました。
ちょうどチェックし、あなたの 'stdout'ですJSON.parseで解析します。失敗した場合は、JSON構造体ではありません – Yerken
チャンクはstdoutの一部を含んでいます。だから、JSONではないかもしれない。 chunk1 = {... 'color': 'bl; chunk2 = ue '...;チャンクN = ...}。 –