データベースから取得するデータに基づいて動的にjsonを構築しようとしています。オープニング '['が "ルート"になるまであなたは言うことができると思います。名前と値を持つ次の部分は動的で、dbから取得した結果の数に基づいています。私はdbに照会して、その結果をjsonに追加するというアイデアを反復することでした。ルートセクションにjsonBuilderを使用し、jsonSlurperでループして各セクションを追加できますか?私が見た例のほとんどは、根を扱って、一度 "slurp"して2つを結合するので、複数のセクションをループして追加する別の方法を試すべきかどうかは分かりませんでした。Groovyを使って動的にjsonを構築する
ヒントをいただければ幸いです。ありがとう。
{
"hostname": "$hostname",
"path": "$path",
"extPath": "$extPath",
"appName": "$appName",
"update": {"parameter": [
{
"name": "$name",
"value": "$value"
},
{
"name": "$name",
"value": "$value"
}
]}
}
EDIT:だから何私がやってしまったことは、単に最初のブロックを作成するためのStringBuilderを使用していたし、その後のセクションを追加します。多分それを行う最も優雅な方法ではないかもしれませんが、それは動作します!私が正しくあなたの説明を持って、データが(それはメモリに生きることができます)非常に大きなではない場合、私は(グルーヴィーで作業するのは非常に簡単です)Map
オブジェクトを構築し、それを変換したい場合は
//Create the json string
StringBuilder json = new StringBuilder("""{
"hostname": "$hostname",
"path": "$path",
"extPath": "$extPath",
"appName": "$appName",
"update": {"parameter": ["""
)
//Append
sql.eachRow("""<query>""",
{ params ->
json.append("""{ "name": "params.name", "value": "params.value" },""");
}
)
//Add closing json tags
json.append("""]}}""")
提案していただきありがとうございます。 – ssbsts
助けがあれば、答えを受け入れるのがいいですか? – sensei