2016-04-30 3 views
-2

私はマップを反復して新しいマップ値を作成しようとしています。以下、私は結果のデータは以下のようになりたいの入力groovy:すべての文字列で値のリストを作成します。

def map = [[name: 'hello', email: ['on', 'off'] ], [ name: 'bye', email: ['abc', 'xyz']]] 

です:

[hello: ['on', 'off'], bye: ['abc', 'xyz']] 

私が今持っているコード - 上記のコードは

を返し

result = [:] 
map.each { key -> 
    result[random] = key.email.each {random -> 
      "$random" 
     } 
    } 
return result 

[hello: [on, off], bye: [abc, xyz]]

あなたは上から見ることができるように

onoffabcxyzからの引用は、私はあなたがそれを変換することができ、リスト値[on, off]

+0

私は上記のコードがどのように機能したのかわかりません!多分、あなたはすべてを貼り付けていないでしょう。私は以下の作業を追加しました。 – mohsenmadi

答えて

0

にチェックを実行しようとしていたときに私のために問題の原因となっている、消えてしまいましたjsonのオブジェクトとすべての引用符がある

0

これはそれです。しかし、面白い方法かもしれません。

def listOfMaps = [[name: 'hello', email: ['on', 'off'] ], [ name: 'bye', email: ['abc', 'xyz']]] 
def result = [:] 
listOfMaps.each { map -> 
    def list = map.collect { k, v -> 
     v 
    } 
    result[list[0]] = ["'${list[1][0]}'", "'${list[1][1]}'"] 
} 
println result 
+0

また、 'list'オブジェクトを' def list = map.collect {(it.value)} 'に置き換えることもできます – mohsenmadi

1

重要ではありません。 Groovyコンソールで結果が表示される場合は、まだStringです。以下は

は十分なものでなければならない:

map.collectEntries { 
    [ it.name, it.email ] 
} 

あなたはまだStringの代わりにGStringを作成するために、単一引用符が必要な場合は、微調整が必​​要とされるであろう、その後の下:

map.collectEntries { 
    [ it.name, it.email.collect { "'$it'" } ] 
} 

私は個人的にはしないでください後のやり方の背後にある推論を見てください。ところでmapMapではなく、Listです。不要な混乱を避けるために名前を変更できます。

関連する問題