2011-07-19 3 views
1

与えられる:myList = [request:request,actions:actions]ここで、要求はオブジェクトであり、アクションはマップです。 C、Dはアクションがマップ・エントリでありながら、aとbは、要求のプロパティですJSON Builderを使用するオブジェクト配列の各オブジェクトにマップを埋め込む方法

{data:[ 
    {a:'a',b:'b',actions:[c:'c',d:'d']},.. 
    ]} 

: はこのような何かを取得しようとしています。使用して :

明らか
render(contentType:"text/json"){ 
    data = array { 
     myList.each { obj-> 
      rqst = { 
      obj.request 
      actions = {actions: obj.actions} 
      } 
     } 
    } 
} 

構文を、ここでは、間違った...しかし、おそらく近いのですか?

答えて

0

私はあなたが探していたものを達成すると思います。 PropsHolderは、2つ(A、B)の特性

def request = new PropsHolder() 
request.a = "a" 
request.b = "b" 
def actions = [c: "c", d: "d"] 

def myList = [request: request, actions: actions] 

render(contentType:"text/json") 
{ 
    [data: [ 
    a: myList.request.a, 
    b: myList.request.b, 
    actions: myList.actions 
    ] 
    ] 
} 

JSONの結果は、Webページへの出力時にこのようになりますと、単純な内部クラスです:

{"data":{"a":"a","b":"b","actions":{"c":"c","d":"d"}}} 

は、私はとかなり確認されませんでした[ a、b、actions]コレクションを検索します。アウトプットから伝えるのは難しいですが、地図と一緒に行きました。

+0

ありがとうございました。しかし、私はリクエストオブジェクトのプロパティすべて(あまりにも多く)を一覧にしたくありませんでした。私はもっ​​と優雅なものを探していた。 AFAIKでは実際にプロパティを処理できるExpandoクラスを使用する以外は、そうする方法はありません。 – dbrin

+0

私は要求のプロパティを反復するコードを追加することについて議論しましたが、aおよびbの参照をハードコードするよりも望ましくないプロパティを引き出すコードが増えました。明らかに多くの特性を持っているなら、それはそれに値するでしょう。 –

関連する問題