将平面文件python dict解析为groovy

时间:2017-09-08 08:03:03

标签: groovy

我是Groovy的新手,我有一个Python文件。它不包含任何代码,它只生成一个Python字典。

所以Python看起来类似于:

bob = {}
bob["names"] = []
bob["names"][0] = {}
bob["names"][0]["nick"] = "wobbly bob"

只是定义了字典。

我目前正在解析groovy中的代码,使用大量的分割,替换和条件将其转化为某些东西,它可以工作,但我无法帮助思考那里必须有更优雅的方式。

所以有人知道我可以用来解析这类信息的好groovy库吗?

1 个答案:

答案 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)

我希望它有所帮助。