有没有一种简单安全的方法可以从外部文件读取Groovy映射?

有没有一种简单安全的方法可以从外部文件读取Groovy映射?,groovy,Groovy,我想将配置作为映射存储在单独的文件中 Groovy是否有一种内置的方法来实现这一点?我不想将配置存储为json文件,而必须读取和转换它——我想将其作为常规Groovy代码存储在单独的文件中 例如,我将在同一目录中创建一个文件,如下所示: // in file myconfig.groovy def myconfig = [ [ "confignode1" : "lsdkfjlskdfjlsdk

我想将配置作为映射存储在单独的文件中

Groovy是否有一种内置的方法来实现这一点?我不想将配置存储为json文件,而必须读取和转换它——我想将其作为常规Groovy代码存储在单独的文件中

例如,我将在同一目录中创建一个文件,如下所示:

// in file myconfig.groovy
def myconfig = [
        [
                "confignode1"              : "lsdkfjlskdfjlsdkjf",
                "param1"                   : "lsdkfjlskdfjlsdkj",
                "param2"                   : "sdkjlskjdflskf"
        ],
        [
                "confignode2"              : "lsdkfjlskdfjlsdkjf",
                "param1"                   : "lsdkfjlskdfjlsdkj",
                "param2"                   : "sdkjlskjdflskf"
        ]
]
// in file myconfig.groovy
[
        [
                "confignode1": "lsdkfjlskdfjlsdkjf",
                "param1"     : "lsdkfjlskdfjlsdkj",
                "param2"     : "sdkjlskjdflskf"
        ],
        [
                "confignode2": "lsdkfjlskdfjlsdkjf",
                "param1"     : "lsdkfjlskdfjlsdkj",
                "param2"     : "sdkjlskjdflskf"
        ]
]

Groovy有没有一种方法可以导入该文件,而我可以像访问常规映射一样访问myconfig?

如果您将myconfig.Groovy更改为返回如下映射,您可以尝试使用
evaluate

// in file myconfig.groovy
def myconfig = [
        [
                "confignode1"              : "lsdkfjlskdfjlsdkjf",
                "param1"                   : "lsdkfjlskdfjlsdkj",
                "param2"                   : "sdkjlskjdflskf"
        ],
        [
                "confignode2"              : "lsdkfjlskdfjlsdkjf",
                "param1"                   : "lsdkfjlskdfjlsdkj",
                "param2"                   : "sdkjlskjdflskf"
        ]
]
// in file myconfig.groovy
[
        [
                "confignode1": "lsdkfjlskdfjlsdkjf",
                "param1"     : "lsdkfjlskdfjlsdkj",
                "param2"     : "sdkjlskjdflskf"
        ],
        [
                "confignode2": "lsdkfjlskdfjlsdkjf",
                "param1"     : "lsdkfjlskdfjlsdkj",
                "param2"     : "sdkjlskjdflskf"
        ]
]
它可以这样使用:

// in file main.groovy
def myconfig = evaluate(new File("myconfig.groovy"))
println myconfig
结果:

> groovy main.groovy
[[confignode1:lsdkfjlskdfjlsdkjf, param1:lsdkfjlskdfjlsdkj, param2:sdkjlskjdflskf], [confignode2:lsdkfjlskdfjlsdkjf, param1:lsdkfjlskdfjlsdkj, param2:sdkjlskjdflskf]]

选中ConfigSlurper或GroovyShell类可能更好地使用JSON:List->JSON->File并以相同的方式加载,反之亦然