簡體   English   中英

從JSON執行Groovy腳本

[英]Executing Groovy script from JSON

如果要使用curl在JSON中發送多行字符串,唯一的方法是使用空格連接字符串。 所以這是工作。 但是,如果我發送將要運行的groovy腳本怎么辦? 就像在內容屬性中一樣:

{
  "name": "helloWorld",
  "content": "repository.createDockerHosted('docker_private', 8082_1, null) repository.createDockerHosted('docker_private_2', 8082, null)",
  "type": "groovy"
}

是否可以通知groovy編譯器有兩條指令? 也許通過在內容值中添加一些特殊字符?

感謝幫助 :)

要將字符串作為Groovy腳本執行,標准模式是將GroovyShellBinding

class Repository {
    def createDockerHosted(a, b, c) {
        println "TRACER createDockerHosted $a $b $c"
    }
}

def content = "repository.createDockerHosted('docker_private', 8082_1, null) ; repository.createDockerHosted('docker_private_2', 8082, null)"

def binding = new Binding()
binding.setProperty('repository', new Repository())
def shell = new GroovyShell(binding)
shell.evaluate(content)

(在上面請注意, content具有;分隔兩個語句)輸出:

$ groovy Example.groovy 

TRACER createDockerHosted docker_private 80821 null
TRACER createDockerHosted docker_private_2 8082 null

因此,對於您的情況(如果我理解的話),唯一的問題是如何從JSON提取content

def jsonStr = '''
{
  "name": "helloWorld",
  "content": "repository.createDockerHosted('docker_private', 8082_1, null) ; repository.createDockerHosted('docker_private_2', 8082, null)",
  "type": "groovy"
}
'''

def jsonMap = new groovy.json.JsonSlurper().parseText(jsonStr)
def content = jsonMap['content']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM