2016-11-16 52 views
1

我在我的一個Jenkins插件中使用Groovy和JSON Slurper。 下面是我使用的代碼:使用JSONSlurper在列表中傳遞第二級JSON

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

這是我的測試套件是如何定義的:

{ 
    "Website1": { 
    "smoke": "spec1.js", 
    "default": "spec2.js" 
    }, 
    "Website2": { 
    "smoke": 
    ["spec1.js", 
    "spec2.js", 
    "spec3.js"], 
    "default": 
    ["spec1.js", 
    "spec5.js"], 
    "TestSuite2": 
    ["spec1.js"] 
    } 
} 

目前我的列表中包含如下,如果我用上面的代碼值:

Website1 Website2

但是我想讓它合作ntain值,如下如果:選擇Website2

煙霧默認Testsuite2

可有人請提出一個方法?我想下面的代碼,但它不工作:

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

有沒有這樣的關鍵:'registry'。 – Opal

+0

我想獲取我的json'smoke默認Testsuite2'的註冊表標記內的值。我對groovy很陌生,所以我不確定如何實現這一點。我也嘗試過'def keys = inputJSON.keySet()。registry as List',但那也不起作用。 – NewWorld

+0

好吧,但是在解析的JSON中沒有這樣的關鍵'註冊表'。 – Opal

回答

1

試試這個方法:

import groovy.json.JsonSlurper 

def input = '''{ 
    "Website1": { 
    "smoke": "spec1.js", 
    "default": "spec2.js" 
    }, 
    "Website2": { 
    "smoke": 
     ["spec1.js", 
     "spec2.js", 
     "spec3.js"], 
    "default": 
     ["spec1.js", 
     "spec5.js"], 
     "TestSuite2": 
     ["spec1.js"] 
    } 
}''' 

def inputJSON = new JsonSlurper().parseText(input) 
def keys = inputJSON.Website2.keySet() 
+0

這工作。謝謝。 – NewWorld