Groovy で JsonBuilder を使用して JSON を動的に生成しようとしています。次のような JSON ブロックを作成します。
{
"type": {
"__type": "urn",
"value": "myCustomValue1"
},
"urn": {
"__type": "urn",
"value": "myCustomValue2"
},
"date": {
"epoch": 1265662800000,
"str": "2010-02-08T21:00:00Z"
},
"metadata": [{
"ratings": [{
"rating": "NR",
"scheme": "eirin",
"_type": {
"__type": "urn",
"value": "myCustomValue3"
}
}],
"creators": [Jim, Bob, Joe]
}]
}
私は書いた:
def addUrn(parent, type, urnVal) {
parent."$type" {
__type "urn"
"value" urnVal
}
}
String getEpisode(String myCustomVal1, String myCustomVal2, String myCustomVal3) {
def builder = new groovy.json.JsonBuilder()
def root = builder {
addUrn(builder, "type", myCustomVal1)
addUrn(builder, "urn", "some:urn:$myCustomVal2")
"date" {
epoch 1265662800000
str "2010-02-08T21:00:00Z"
}
"metadata" ({
ratings ({
rating "G"
scheme "eirin"
addUrn(builder, "_type", "$myCustomVal3")
})
creators "Jim", "Bob", "Joe"
})
}
return root.toString();
}
しかし、私は次の問題に遭遇しました:
- を呼び出すたびに
addUrn
、文字列には何も返されません。 Groovy でメソッドを使用する方法を誤解していますか? - 返される文字列では、二重引用符 (または一重引用符) でカプセル化された値はありません。
- を使用する
{
たびに、戻り値に「_getEpisode_closure2_closure2@(insert hex)」が返されます。
構文に何か問題がありますか? または、単純な値を超えたメソッドや例 (配列内のネストされた値など) を使用する例/チュートリアルを教えてください。
注: これは骨抜きにされた例ですが、問題を引き起こしている領域の複雑さを維持しようとしました。