迭代JSON数据以生成Groovy表
我已经为import.io创建了一个API包装器,它为我带回了一些数据。我希望创建一个数据表,以便在我的网站上显示足球联赛。我正在努力了解如何在Groovy中迭代数据并将其转换为表。我目前正在使用JsonSlurper将API中的数据转换成JSON。这是我的JSON迭代JSON数据以生成Groovy表,json,api,groovy,Json,Api,Groovy,我已经为import.io创建了一个API包装器,它为我带回了一些数据。我希望创建一个数据表,以便在我的网站上显示足球联赛。我正在努力了解如何在Groovy中迭代数据并将其转换为表。我目前正在使用JsonSlurper将API中的数据转换成JSON。这是我的JSON { "extractorData": { "data": [ { "group": [ {
{
"extractorData": {
"data": [
{
"group": [
{
"Content": [
{
"text": "Clapham Junction Thursday"
}
],
"Value 1": [
{
"text": "P"
}
],
"Value 2": [
{
"text": "W"
}
],
"Value 3": [
{
"text": "D"
}
],
"Value 4": [
{
"text": "L"
}
],
"Value 5": [
{
"text": "GF"
}
],
"Value 6": [
{
"text": "GA"
}
],
"Value 7": [
{
"text": "GD"
}
],
"Value 8": [
{
"text": "PTS"
}
]
},
{
"Content": [
{
"text": "Wavey Wanderers"
}
],
"Link": [
{
"href": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/TeamProfile.aspx?TeamId=2865&LeagueId=28&SeasonId=61&DivisionId=1098",
"text": "Wavey Wanderers"
}
],
"Value 1": [
{
"text": "5"
}
],
"Value 2": [
{
"text": "3"
}
],
"Value 3": [
{
"text": "0"
}
],
"Value 4": [
{
"text": "2"
}
],
"Value 5": [
{
"text": "31"
}
],
"Value 6": [
{
"text": "22"
}
],
"Value 7": [
{
"text": "9"
}
],
"Value 8": [
{
"text": "9"
}
]
},
{
"Content": [
{
"text": "The Feet of Hermes"
}
],
"Link": [
{
"href": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/TeamProfile.aspx?TeamId=2206&LeagueId=28&SeasonId=61&DivisionId=1098",
"text": "The Feet of Hermes"
}
],
"Value 1": [
{
"text": "5"
}
],
"Value 2": [
{
"text": "3"
}
],
"Value 3": [
{
"text": "0"
}
],
"Value 4": [
{
"text": "2"
}
],
"Value 5": [
{
"text": "21"
}
],
"Value 6": [
{
"text": "13"
}
],
"Value 7": [
{
"text": "8"
}
],
"Value 8": [
{
"text": "9"
}
]
},
{
"Content": [
{
"text": "Multiple Scoregasms"
}
],
"Link": [
{
"href": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/TeamProfile.aspx?TeamId=959&LeagueId=28&SeasonId=61&DivisionId=1098",
"text": "Multiple Scoregasms"
}
],
"Value 1": [
{
"text": "5"
}
],
"Value 2": [
{
"text": "3"
}
],
"Value 3": [
{
"text": "0"
}
],
"Value 4": [
{
"text": "2"
}
],
"Value 5": [
{
"text": "25"
}
],
"Value 6": [
{
"text": "24"
}
],
"Value 7": [
{
"text": "1"
}
],
"Value 8": [
{
"text": "9"
}
]
},
{
"Content": [
{
"text": "Pugh let the Cruyffs out"
}
],
"Link": [
{
"href": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/TeamProfile.aspx?TeamId=2875&LeagueId=28&SeasonId=61&DivisionId=1098",
"text": "Pugh let the Cruyffs out"
}
],
"Value 1": [
{
"text": "5"
}
],
"Value 2": [
{
"text": "3"
}
],
"Value 3": [
{
"text": "0"
}
],
"Value 4": [
{
"text": "2"
}
],
"Value 5": [
{
"text": "17"
}
],
"Value 6": [
{
"text": "20"
}
],
"Value 7": [
{
"text": "-3"
}
],
"Value 8": [
{
"text": "9"
}
]
},
{
"Content": [
{
"text": "Michu At De Gea Ba"
}
],
"Link": [
{
"href": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/TeamProfile.aspx?TeamId=2656&LeagueId=28&SeasonId=61&DivisionId=1098",
"text": "Michu At De Gea Ba"
}
],
"Value 1": [
{
"text": "5"
}
],
"Value 2": [
{
"text": "2"
}
],
"Value 3": [
{
"text": "0"
}
],
"Value 4": [
{
"text": "3"
}
],
"Value 5": [
{
"text": "20"
}
],
"Value 6": [
{
"text": "20"
}
],
"Value 7": [
{
"text": "0"
}
],
"Value 8": [
{
"text": "6"
}
]
},
{
"Content": [
{
"text": "Shire Soldiers"
}
],
"Link": [
{
"href": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/TeamProfile.aspx?TeamId=1994&LeagueId=28&SeasonId=61&DivisionId=1098",
"text": "Shire Soldiers"
}
],
"Value 1": [
{
"text": "5"
}
],
"Value 2": [
{
"text": "1"
}
],
"Value 3": [
{
"text": "0"
}
],
"Value 4": [
{
"text": "4"
}
],
"Value 5": [
{
"text": "17"
}
],
"Value 6": [
{
"text": "32"
}
],
"Value 7": [
{
"text": "-15"
}
],
"Value 8": [
{
"text": "3"
}
]
}
]
}
],
"resourceId": "7103552b590f38e1b6c50352145431ac",
"url": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/Standings.aspx?LeagueId=28&SeasonId=61"
},
"pageData": {
"resourceId": "7103552b590f38e1b6c50352145431ac",
"statusCode": 200,
"timestamp": 1485378614012
},
"runtimeConfigId": "cfc5c9d6-2799-4eec-a899-d18fbd53db97",
"sequenceNumber": -1,
"timestamp": 1485378824648,
"url": "http://london5aside.spawtz.com/SpawtzSkin/Fixtures/Standings.aspx?LeagueId=28&SeasonId=61"
}
下面是我目前在Ratpack处理程序中执行的操作
class LeagueTableHandler extends InjectionHandler {
void handle(Context context, ImportClient importClient) {
def data = importClient.leagueDataExtractor()
def jsonSlurper = new JsonSlurper().parseText(data.contentAsString)
context.render Jackson.json(jsonSlurper)
}
}
理想情况下,我希望它看起来像这样
在处理Json时,有人有什么建议吗
编辑
我不确定是否是JSON结构导致了我的问题,但我在测试中获得值的唯一方法就是这样做
List<String> teamNames = []
when:
jsonSlurped.result.extractorData.data.group.Content.text.each { firstNested ->
firstNested.each { secondNested ->
secondNested.each { finalValue ->
teamNames.add(finalValue)
}
}
}
列出团队名称=[]
什么时候:
jsonSlurped.result.extractorData.data.group.Content.text.each{firstNested->
firstNested.each{secondNested->
secondNested.each{finalValue->
teamNames.add(最终值)
}
}
}
显然,对于值1、值2等,我不想这样做,有没有更好更有效的方法来获取每一条信息?UI组件需要什么格式?这就是驱动后端代码的原因只是一个标准的html表您正在使用groovy模板作为UI?抱歉,我使用了handlebars我在考虑可能将组数组中的每个对象映射到一个对象,将这些对象存储在列表中,然后在handlebars中迭代,但无法看到这种方法的效果