我想从对象列表中构建一个json。到目前为止,我只能在json中生成一个对象。我错过了什么?有没有更好的方法将对象列表转换为json?
private static List<ProductAlertsResponse> executeSelection(String query)
{
List<ProductAlertsResponse> prodAlerts=new ArrayList<ProductAlertsResponse>()
sql.eachRow(query)
{
ProductAlertsResponse prodAlert=new ProductAlertsResponse((String)it.id,(String)it.name,(String)it.description,(String)it.active,(String)it.release_date)
//I was converting it into a List before, but then I thought it would be better to do with list of classes
/*String[] rows=new String[5]
rows[0]=(String)it.id
rows[1]=(String)it.name
rows[2]=(String)it.description
rows[3]=(String)it.active
rows[4]=(String)it.release_date
result.add(rows)*/
/*Also feel free to comment is this right way to put in list (above commented code)*/
prodAlerts.add(prodAlert)
}
return prodAlerts
}
static main(args) {
AppProperties.load()
sql= Sql.newInstance("jdbc:oracle:thin:@"+AppProperties.get("hostname")+":"+AppProperties.get("port")+":"+AppProperties.get("service"), AppProperties.get("username"), AppProperties.get("password"),"oracle.jdbc.OracleDriver")
List result=executeSelection("select ID,NAME,DESCRIPTION,ACTIVE,RELEASE_DATE from productinfo where ACTIVE='A'")
def builder = new groovy.json.JsonBuilder()
def root=builder.response{
product_alerts{
result.each{
//JsonOutput.toJson(it)
id it.getId()
name it.getName()
description it.getDescription()
active it.getActive()
}
}
}
println builder.toPrettyString()
}
我的输出
{
"response": {
"product_alerts": {
"id": "6",
"name": "ABC1",
"description": "Test2",
"active": "A"
}
}
}
答案 0 :(得分:5)
使用def builder = new groovy.json.JsonBuilder(result)
<强>更新强>
试试这个
def json = new groovy.json.JsonBuilder()
def result1 = json {
response result
}
println json.toPrettyString()