Groovy:解析JSON文件

Mah*_*man 6 iteration syntax groovy parsing json

我是Groovy的新手,我正在使用以下代码解析JSON文件:

void getItemData()
{
    def jsonSlurper = new JsonSlurper()
    def reader = new BufferedReader(new InputStreamReader(new FileInputStream("data.json"),"UTF-8"));
    data = jsonSlurper.parse(reader);       
    data.TESTS.each{println  it.MEMBER_ID}
}
Run Code Online (Sandbox Code Playgroud)

我正在正确打印MEMBER_ID的值.

我想参数化上面的函数,如:

void getItemData(String item)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样我就可以用我想要的项目来调用这个函数.例如:我想要MEMBER_ADDRESS.我想调用这个函数:

getItemData("MEMBER_ADDRESS")
Run Code Online (Sandbox Code Playgroud)

现在我该如何改变声明:

data.TESTS.each{println  it.MEMBER_ID}
Run Code Online (Sandbox Code Playgroud)

我试过了

it.${item}
Run Code Online (Sandbox Code Playgroud)

和其他一些不起作用的方式.

请教我如何做到这一点.

我的JSON文件如下所示:

{
    "TESTS": 
    [
         {
              "MEMBER_ID": "my name",
              "MEMBER_ADDRESS": "foobarbaz",
         }
    ]
}
Run Code Online (Sandbox Code Playgroud)

Sor*_*ter 9

这些来自谷歌,寻找解析JSON文件的答案.

void getItemData(String item) {
    def jsonSlurper = new JsonSlurper()
    def data = jsonSlurper.parseText(new File("data.json").text)
    println data.TESTS.each{ println it["$item"] }  
}

getItemData("MEMBER_ADDRESS")
Run Code Online (Sandbox Code Playgroud)


Ger*_*oth 5

您需要${item}像这样添加引号:

import groovy.json.*

void getItemData(String item) {
    def jsonSlurper = new JsonSlurper()
    def reader = new BufferedReader(new InputStreamReader(new FileInputStream("/tmp/json"),"UTF-8"))
    data = jsonSlurper.parse(reader)  
    data.TESTS.each { println  it."$item" }
}

getItemData("MEMBER_ADDRESS")
Run Code Online (Sandbox Code Playgroud)