WebサービスでのGroovyマップおよびリストの使用
webサービスから構造化データを渡して受信する場合、Groovyマップはオブジェクトとそのプロパティを表します。
たとえば、Empno
、Ename
、Sal
およびHiredate
という名前のプロパティを持つEmployee
オブジェクトは、4つのキー/バリュー・ペアを持つMap
オブジェクトで表されます。ここで、プロパティの名前はキーです。
次の構文を使用して空のMap
を作成できます:
def newEmp = [:]
その後、次のように明示的なput()
メソッドを使用してマップにプロパティを追加できます:
newEmp.put("Empno",1234)
newEmp.put("Ename","Sean")
newEmp.put("Sal",9876)
newEmp.put("Hiredate",date(2013,8,11))
また、次のような単純な直接割当て表記法を使用して、マップ・キー/バリューのペアを割り当てたり、更新したりすることもできます:
newEmp.Empno = 1234
newEmp.Ename = "Sean"
newEmp.Sal = 9876
newEmp.Hiredate = date(2013,8,11)
最後に、新しいマップを作成し、コンストラクタ構文を使用してそのプロパティの一部またはすべてを一度に割り当てることもできます:
def newEmp = [Empno : 1234,
Ename : "Sean",
Sal : 9876,
Hiredate : date(2013,8,11)]
オブジェクトのコレクションを作成するには、Groovy List
オブジェクトを使用します。 一度に1つのオブジェクトを作成し、空のリストを作成し、リストのadd()
メソッドをコールして両方のオブジェクトをリストに追加できます:
def dependent1 = [Name : "Dave",
BirthYear : 1996]
def dependent2 = [Name : "Jenna",
BirthYear : 1999]
def listOfDependents = []
listOfDependents.add(dependent1)
listOfDependents.add(dependent2)
いくつかのステップを保存するために、前述の最後の3行を1行で実行するには、次のように2つの目的の要素を持つ新しいリストを1行に作成します:
def listOfDependents = [dependent1, dependent2]
リスト・コンストラクタ構文とマップ・コンストラクタ構文の組合せを使用して、マップのリストを1回で作成することもできます:
def listOfDependents = [[Name : "Dave",
BirthYear : 1996],
[Name : "Jenna",
BirthYear : 1999]]
前述の従業員オブジェクトに、依存する子を表すオブジェクトのリストであるDependents
というプロパティがある場合、(割り当てられた値としてマップのリストを使用して)前述と同じ構文を使用してプロパティを割り当てることができます:
newEmp.Dependents = [[Name : "Dave",
BirthYear : 1996],
[Name : "Jenna",
BirthYear : 1999]]
最後に、コンストラクタ構文をさらにネストすることで、ネストされた依存を持つ新しい従業員を1つの文に構築することもできます:
def newEmp = [Empno : 1234,
Ename : "Sean",
Sal : 9876,
Hiredate : date(2013,8,11),
Dependents : [
[Name : "Dave",
BirthYear : 1996],
[Name : "Jenna",
BirthYear : 1999]]
]