Return 来自 JSON 列表的子列表 Groovy active choices reactive reference parameter

Return a sub-list from a JSON list in Groovy active choices reactive reference parameter

我的active choices reactive reference parameter读取以下JSON文件

{
"Name": "Tom",
"Age": "25",
"Subjects": ["English", "Physics", "Chemistry", "Biology", "Maths"]
}

引用的参数有fileNos(之前的active choices reactive parameter)是一个单选按钮,值为1,2,3,4,5

现在根据 Nos 的值,我必须显示主题。这就是我所做的:

import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def config = jsonSlurper.parse(new File(file))
return config.Subjects

使用上面的代码,输出是,

 1. English
 2. Physics
 3. Chemistry
 4. Biology
 5. Maths

如果我尝试 return config.Subjects.take(Nos)config.Subjects.subList(Nos),如果 Nos = 3

1. English
2. Physics
3. Chemistry

但我什么也没看到。然后我试了,

import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def config = jsonSlurper.parse(new File(file))
list = []
i = 0
config.Subjects.each {
while (i < Nos){
list.add "$it".toString()
i = i + 1
}
}
return list

但是这次,我总是看到 1. English,无论我选择哪个单选按钮 select。我哪里错了?

你的代码几乎是正确的。您应该使用 take 来分割列表。例如 take(2) 将 return 前两个元素。所以不要 returning config.Subjects,尝试 returning (config.Subjects).take(Nos)

import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def config = jsonSlurper.parse(new File(file))
return (config.Subjects).take(Nos)

如果Nos是一个字符串,把它转换成整数然后return像这样

import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def config = jsonSlurper.parse(new File(file))
return (config.Subjects).take(Nos.toInteger())