导致python脚本JSON错误的Java进程

我有一个管理数据的 Java 程序。当它想从所述数据创建报告时,它通过保存一个带有报告相关数据的 JSON 文件,然后通过使用 ProcessBuilder 对象启动 python 脚本来实现。但是,如果我尝试从 python 脚本的输出中提取数据,我会遇到一个奇怪的错误。


ProcessBuilder pythonProcess = new 

ProcessBuilder("python","ReportingTool.py");

pythonProcess.directory(new File("invoice_python_files\\"));

Process pythonRunnable =pythonProcess.start();

/*

BufferedReader outputReader = new BufferedReader(new 

InputStreamReader(pythonRunnable.getInputStream()));

BufferedReader errorReader = new BufferedReader(new 

InputStreamReader(pythonRunnable.getErrorStream()));

String line =null;

System.out.println("<ERROR>");

while ( (line = errorReader.readLine()) != null)

    System.out.println(line);


System.out.println("</ERROR>");

System.out.println("<Output">)


while ( (line = outputReader.readLine()) != null)

    System.out.println(line);


System.out.println("</OUTPUT>");

 */

这工作正常并按预期生成报告(没有输入流代码)。如果我然后取消注释代码,我会从 python 脚本中得到一个错误。


 File "C:\Users\o.cohen\AppData\Local\Programs\Python\Python36- 

 32\lib\json\decoder.py", line 357, in raw_decode

 raise JSONDecodeError("Expecting value", s, err.value) from None

 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我不明白 java 进程是如何导致错误的,更重要的是如何修复它。下面是导致错误的代码(特别是最后一行:


with open("InvoiceMakerDoc.json") as json_file:

    json_data=json_file.read()

    decoded_data =json.loads(json_data)


慕标琳琳
浏览 194回答 2
2回答

慕尼黑8549860

设法修复它。该程序在关闭 python 程序之前正在写入 JSON 文件,并且 FileWriter 对象尚未关闭导致问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java