基本的に、私は何とかしてGroovyオブジェクトからJSONオブジェクトを作成したいと考えています。値が配列であるキーを持つオブジェクトを作成する
:{
"id": "asdfl469934623sdglsi3aqaq",
"displayName": "Some Lightbulb",
"value": "on"
}
そしてcapabilitiesList
は私にこれを与える:json.toPrettyString()
はこの私に与え、この時点で
import groovy.json.*
// Imagine "handler" gets called somehow and an event gets passed to it.
def handler(event) {
def capabilitiesList = event.device.capabilities.findAll { attr -> attr.name != null }
def json = new JsonBuilder({
id event.deviceId
displayName event.displayName
value event.value
})
}
log.debug capabilitiesList
log.debug json.toPrettyString()
:Groovyのオブジェクトは、キーと値のペアを持っている、との値のいずれかがGroovyの配列です
["Test 1", "Test 2", "Test 3"]
capabilitiesList
配列をGroovyオブジェクトに追加してJSONに変換するにはどうすればよいですか?
私は動作するようには思えません。仕事をする唯一のものはこれです:
私は、この(正しい)JSON出力できます// ...
def json = new JsonBuilder({
id event.deviceId
displayName event.displayName
value event.value
capabilitiesList "Test 1", "Test 2", "Test 3"
})
// ...
:
{
"id": "asdfl469934623sdglsi3aqaq",
"displayName": "Some Lightbulb",
"value": "on",
"capabilitiesList": ["Test 1", "Test 2", "Test 3"]
}
をしかし、それは、ハードコーディングされていますので、それは明らかに有用ではありません。
// ...
def capabilitiesList = event.device.capabilities.findAll { attr -> attr.name != null }
def json = new JsonBuilder({
id event.deviceId
displayName event.displayName
value event.value
capabilitiesList capabilitiesList
})
// ...
しかし、それは何とかJsonBuilder
を壊し、それは何も出力しません。だから私はこのように直接配列を参照してみました。
私はおそらく、ここでは本当にばかげていることをしていますが、これをどうやって行うのかは分かりません。 Groovyにも初めて。助けてくれてありがとう!
、' capabilitiesList'秒の時間を使います。最初はJSONプロパティの名前として解釈されます。 2回目はJSONリストに変換されるGroovyリスト変数として解釈されます。 – BalRog
申し訳ありませんが、それは私の間違いでした。上で説明したことをすると、 'toPrettyString()'に文字列を出力できません。 : – Titus
Hmmmmここで何か変なことが起こっています。これを試してみてください:def capabilitiesListを宣言から 'List capabilitiesList'に変更し、何が起こるかを教えてください –
BalRog