检索JSON对象中的动态对象并将其放入Groovy数组
我是Groovy新手,找不到任何与此相关的资源。我试图从一个“dates”对象中提取数据,并将其放入一个固定对象数组中。原因是日期内的对象将发生变化,我想将其放入“固定”中以便于操作: 原件:检索JSON对象中的动态对象并将其放入Groovy数组,json,object,arraylist,groovy,Json,Object,Arraylist,Groovy,我是Groovy新手,找不到任何与此相关的资源。我试图从一个“dates”对象中提取数据,并将其放入一个固定对象数组中。原因是日期内的对象将发生变化,我想将其放入“固定”中以便于操作: 原件: { "dates": { "2021-02-08": "8", "2021-02-09": "8", "2021-02-10": "8" }}
{
"dates": {
"2021-02-08": "8",
"2021-02-09": "8",
"2021-02-10": "8"
}}
需要输出:
{
"dates": [
{
"date": "2021-02-08",
"value": "8"
},
{
"date": "2021-02-09",
"value": "8"
},
{
"date": "2021-02-10",
"value": "8"
},
]}
我正在尝试使用当前代码:
arrayList = []
arrayList.add(content[0].dates)
它返回一个[[2021-02-08:812021-02-09:812021-02-10:8]],但我无法将其提取为数组
有什么想法吗?我已经找到了解决方案,以防有人需要它。下面是一段可以在groovy控制台上测试的代码:
import groovy.json.JsonSlurper;
import groovy.json.JsonOutput;
def jsonSlurper = new JsonSlurper()
def content= jsonSlurper.parseText '''
[{"dates": {
"2021-02-08": "8",
"2021-02-09": "8",
"2021-02-10": "8",
}}]
'''
arrayList = [];
newArrayList = [];
finalArrayList = []
arrayList = content[0].dates.toString().substring(1,content[0].dates.toString().length() - 1).split(',')
for (i = 0; i < arrayList.size(); i++){
newArrayList.add(arrayList[i].split('='))
}
for (i = 0; i < newArrayList.size(); i++){
finalArrayList.add('{"date": "'+ newArrayList[i][0]+ '", "value": "' + newArrayList[i][1] + '"}')
}
content[0].dates = finalArrayList
println(content[0].dates)
import groovy.json.JsonSlurper;
导入groovy.json.JsonOutput;
def jsonSlurper=新的jsonSlurper()
def content=jsonSlurper.parseText''
[{“日期”:{
"2021-02-08": "8",
"2021-02-09": "8",
"2021-02-10": "8",
}}]
'''
arrayList=[];
newArrayList=[];
finalArrayList=[]
arrayList=content[0]。dates.toString().substring(1,内容[0]。dates.toString().length()-1)。拆分(“,”)
对于(i=0;i
我已经找到了解决方案,以防有人需要它。下面是一段可以在groovy控制台上测试的代码:
import groovy.json.JsonSlurper;
import groovy.json.JsonOutput;
def jsonSlurper = new JsonSlurper()
def content= jsonSlurper.parseText '''
[{"dates": {
"2021-02-08": "8",
"2021-02-09": "8",
"2021-02-10": "8",
}}]
'''
arrayList = [];
newArrayList = [];
finalArrayList = []
arrayList = content[0].dates.toString().substring(1,content[0].dates.toString().length() - 1).split(',')
for (i = 0; i < arrayList.size(); i++){
newArrayList.add(arrayList[i].split('='))
}
for (i = 0; i < newArrayList.size(); i++){
finalArrayList.add('{"date": "'+ newArrayList[i][0]+ '", "value": "' + newArrayList[i][1] + '"}')
}
content[0].dates = finalArrayList
println(content[0].dates)
import groovy.json.JsonSlurper;
导入groovy.json.JsonOutput;
def jsonSlurper=新的jsonSlurper()
def content=jsonSlurper.parseText''
[{“日期”:{
"2021-02-08": "8",
"2021-02-09": "8",
"2021-02-10": "8",
}}]
'''
arrayList=[];
newArrayList=[];
finalArrayList=[]
arrayList=content[0]。dates.toString().substring(1,内容[0]。dates.toString().length()-1)。拆分(“,”)
对于(i=0;i
您可以通过collect
查看地图,将其转换为列表。例如
def json = """{"dates": { "2021-02-08": "8", "2021-02-09": "8", "2021-02-10": "8" }}"""
def data = new groovy.json.JsonSlurper().parseText(json)
def result = [dates: data.dates.collect{ k, v -> [date: k, value: v] }]
println result
// -> [dates:[[date:2021-02-08, value:8], [date:2021-02-09, value:8], [date:2021-02-10, value:8]]]
您可以通过
collect
ing将地图转换为列表。例如
def json = """{"dates": { "2021-02-08": "8", "2021-02-09": "8", "2021-02-10": "8" }}"""
def data = new groovy.json.JsonSlurper().parseText(json)
def result = [dates: data.dates.collect{ k, v -> [date: k, value: v] }]
println result
// -> [dates:[[date:2021-02-08, value:8], [date:2021-02-09, value:8], [date:2021-02-10, value:8]]]
这可能在这里起作用,但会使用不同的数据爆炸,因为“toString”不是合适的序列化格式。这可能在这里起作用,但会使用不同的数据爆炸,因为“toString”不是合适的序列化格式。太棒了!谢谢你真棒!非常感谢。