1
オブジェクトのリストからjsonをビルドしたいと思います。これまで私はjsonにオブジェクトを1つしか生成できませんでした。私は何が欠けていますか?オブジェクトのリストをjsonに変換するより良い方法はありますか?groovyのオブジェクトリストから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"
}
}
}
感謝を試してみてくださいすべてのオブジェクトをjsonに変換します。もし私がルートタグ '応答'を持っていたらどうしますか? – abi1964
ちょっとしたヒント、ルートノードを追加するだけでいいのであれば、 'new groovy.json.JsonBuilder([response:result])'を使ってください。 – OverZealous
@OverZealous:ありがとう、素晴らしいチップ、またあなたは継続を見てみてください[質問はこちら](http://stackoverflow.com/questions/8969545/why-do-i-keep-getting-object-reference-on -server-while-it-works-fine-on-a-local)? – abi1964