我有一个普通代码,其中调用了python脚本。有没有办法读取由python脚本打印/返回的json序列化数据?
用于调用python脚本的常规代码:
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。
答案 0 :(得分:0)
您可能正在寻找这个:
print json.drumps(dd)
运行良好并完成了工作。您必须正确读取groovy代码中的过程输出。在常规脚本中,def jsonResp = parser.parseText(sout[0])
使用java.lang.StringBuilder
作为Array list
。这就像String []
一样。因此,您正在加载字符串"{"
中的第一个字符sout[0]
,共计String。
我不知道你为什么这样说。
JsonSlurper().parseText
仅允许使用String
参数,请参见doc。您可以按照以下显示的方式使用它:
parseText(sout.toString())
parseText(sout.readLines())