我是Groovy的新手,我有一个Python文件。它不包含任何代码,它只生成一个Python字典。
所以Python看起来类似于:
bob = {}
bob["names"] = []
bob["names"][0] = {}
bob["names"][0]["nick"] = "wobbly bob"
只是定义了字典。
我目前正在解析groovy中的代码,使用大量的分割,替换和条件将其转化为某些东西,它可以工作,但我无法帮助思考那里必须有更优雅的方式。
所以有人知道我可以用来解析这类信息的好groovy库吗?
答案 0 :(得分:1)
您可以从Groovy脚本中运行Python脚本。看一下下面的例子:
<强> test.py 强>
Double Checked Locking
重要:您的脚本必须生成任何输出,以便Groovy可以解析它。这就是我将
bob = {"names":[{"nick": "wobbly bob"}]} print(bob)
放在脚本末尾的原因。
<强> test.groovy 强>
print(bob)
为简单起见,两个文件都必须放在同一个文件夹中。
运行import groovy.json.JsonSlurper
import groovy.json.JsonParserType
def cmd = ["python", "test.py"]
def result = cmd.execute()
def json = new JsonSlurper().setType(JsonParserType.LAX).parseText(result.text)
println json
会产生以下输出:
groovy test.groovy
请记住,Python脚本会生成以下输出:
[names:[[nick:wobbly bob]]]
这就是为什么我们调用{'names': [{'nick': 'wobbly bob'}]}
(tim_yates的信用来建议这种方法,而不是用双引号替换所有单引号)以接受单引号,否则Groovy会抱怨:
.setType(JsonParserType.LAX)
我希望它有所帮助。