web-dev-qa-db-ja.com

groovyとJenkinsを使用してjsonファイルを読み取るためのヘルプが必要

JSONファイルの読み取りでいくつかの問題に直面しています。 Jenkins Active Choice Parameterを使用して、Groovyスクリプトを介してJSONファイルから値を読み取ります。これが私のJSONファイルの外観です。

{
  "smoke": "Test1.js",
  "default": "Test2.js"
}

Groovyスクリプトで煙とデフォルトを出力したい。以下は私のグルーヴィーなコードがどのように見えるかです。

import groovy.json.JsonSlurper
def inputFile = new File(".\TestSuitesJ.json")
def InputJSON = new JsonSlurper().parseText(inputFile)
InputJson.each
{
return[
key
]
}

上記のコードは私には機能しません。誰かがより良いグルーヴィーな方法を提案できますか?

6
NewWorld

あなたは本当にgroovy開発キットのページを読むべきです、そして this 特に。

あなたの場合、parseText()LazyMapインスタンスを返すため、各クロージャーで取得するit変数はMap.Entryインスタンスを表します。したがって、println it.keyで必要なものを取得できます。

よりグルーヴィーな方法は次のようになります。

inputJson.each { k, v ->
  println k
}

この場合、groovyは、マップ内のすべての要素のキー(k)と値(v)をクロージャに渡します。

3
sensei

実行時にJSONファイルをインポートしようとしているのと同じような状況にある人。 ActiveChoiceパラメーターを使用して問題を解決しました。 JenkinsのActiveChoiceParameterプラグインにGroovyスクリプトを作成するオプションがあります。そこで、JSONファイルをインポートして目的の結果を達成するためのコードを以下に記述しました。

import groovy.json.JsonSlurper
def inputFile = new File('.//TestSuitesJ.json')
def inputJSON = new JsonSlurper().parse(inputFile)
def keys = inputJSON.keySet() as List

@senseiに、Groovyの学習を手伝ってくれてありがとう。

2
NewWorld