2012-03-09 6 views
2

私が作成したRestFul APIの一部としてJSONをレンダリングするのにGrails 2.1を使用しています。Groovy/GrailsのGenerated JSONにネストされたアイテムを挿入しました

のString firstNameの
のString lastNameの
文字列officialAddress1
(など) 文字列officalAddress2
文字列preferredAddress1
文字列preferredAddress2
:SqlServerのテーブルに基づいて、ドメインクラスには、次のようになります。 。 。これに似たJSONを返す

{
"firstNameの": "ジョー"、
"lastNameの": "丘"、
"officialAddress1": "1100 Wobをヒル"、
"officialAddress2": "アプト#3"、
"preferredAddress1": "1100グラグラレーン。"、
"preferredAddress2": "アパート3"
}

それが正常に動作しているが、クライアントが巣にこのやり方で結果を私に望んでいる:
{
"firstNameの": "ジョー"、
"lastNameの": "丘" を、
preferredAddress {
"preferredAddress1": "1100 Wobbly Lane"、
"preferredAddress1": "Apartment 3"
}、
officialAddress {
"officialAddress1": "1100 Wobをヒル"、
"officialAddress2": "アプト#3"
}
}

私の質問は、ドメインクラス以来で、とデータベースは、このタイプのネストされた結果を返す方法で構造体ではありません私は簡単にこれを返すJSONでどのように変更できますか?私は、データベース/ドメインオブジェクトに基づいてJSONを逆戻りさせ、何らかの種類のカスタムコンバータを実行する方法を放棄しなければなりませんか?

答えて

4

私はこのstackoverflowのことを初めて知り、私はそれを混乱させないだろうが、私はあなたが必要なものを知っていると思う。あなたのbootstrap.groovyファイルであなたが見つける - そこでは「デフのinit = {のServletContext>」行 プット、このような何か:

JSON.registerObjectMarshaller(YourDomainName) { 
def returnArray = [:] 
returnArray['firstName'] = it.firstName 
returnArray['lastName'] = it.lastName 
returnArray['preferredAddress'] = [it.preferredAddress1 ,it.preferredAddress2] 
returnArray['officialAddress'] = [it.officialAddress1 ,it.officialAddress2] 
return returnArray 
} 

を今あなたはGrailsのブートストラップになりますなかったとして、あなたがJSONでのレンダリングを使用する場合と、 ドメインを要求どおりにレンダリングします。

これが役に立ちます

+0

これまでのコメントは100%正確ではないため、削除しました。これはとても役に立ちました!私は必要とする正確な結果を得るために構文的に少し違っていましたが、私はこのページでそれを更新します。再度、感謝します! – jseals

1

投稿された回答が正しいです。私はちょうど私が必要な正確な結果を得るために行ったわずかな変更を追加したい:

ありがとう!それがそれでした。もともと私はそれが必要な方法で正確に動作しないだろうが、私は間違っていた。構文を少し変更して、必要な結果を得ました。

 returnArray['preferredAddress'] = [address1: it.preferredAddress1?.trim(), 
      address2: it.preferredAddress2?.trim(), 
      address3: it.preferredAddress3?.trim(), 
      city: it.preferredCity, 
      state: it.preferredState, 
      postCode: it.preferredPostCode, 
      country: it.preferredCountry 
      ] 
関連する問題