从groovy中对python脚本的子进程调用读取序列化数据

2024-03-29 07:50:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个调用python脚本的groovy代码。有没有办法读取python脚本打印/返回的json序列化数据?你知道吗

调用python脚本的Groovy代码:

def sout = new StringBuilder(), serr = new StringBuilder()
def cmd = ["python2.7","myscript.py"]
def proc = cmd.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitFor()
def parser = new JsonSlurper()
def jsonResp = parser.parseText(sout[0])
log.debug(jsonResp)

Python脚本:

dd = {'key1': 'value1', 
      'key2':'value2', 
      'key3': {'key31':'value31'}
      }
print json.dumps(dd)

输出:

jsonResp = {}当代码运行时。你知道吗

jsonResp['key1']也为空,表示没有从进程输出读取json。你知道吗


Tags: 代码脚本cmdjsonparsernewdefproc
1条回答
网友
1楼 · 发布于 2024-03-29 07:50:25

您可能正在寻找:

  • ^来自python代码的{}运行良好并完成了它的工作。必须正确读取groovy代码中的进程输出。你知道吗

在groovy脚本中,def jsonResp = parser.parseText(sout[0])使用java.lang.StringBuilder作为Array list。这就像String []。所以您正在加载total string中字符串sout[0]的第一个字符"{"。你知道吗

I don't know why you put it like this.

JsonSlurper().parseText只允许String参数参见doc。您可以按以下方式使用它:

  • parseText(sout.toString())

  • parseText(sout.readLines())

相关问题 更多 >