Grails 2.4.4で作業を開始しましたが、JSONを出力するREST APIを作成しようとしていますが、オブジェクトをJSONとしてレンダリングする際に問題があります。以下に、ドメインクラス、コントローラ、およびオブジェクトマーシャルを示します。GrailsレンダリングJSON
ドメインクラス:
@Resource(uri='/users')
class User {
List contacts;
String name;
String password;
static hasMany=[contacts:Contact]
static constraints = {
}
static mapping = {
contacts lazy: false
}
}
コントローラー:グルーヴィー
class UserController {
def index() {
//json
render User.getAll() as JSON
}
ブートストラップ:
class BootStrap {
def init = { servletContext ->
JSON.registerObjectMarshaller(User) {
def output = [:]
output['id'] = it.id
output['name'] = it.name
output['contacts'] = it.contacts
return output;
}
JSON.registerObjectMarshaller(Contact) {
def output = [:]
output['id'] = it.id;
output['name'] =it.name;
output['phoneNumber'] = it.phoneNumber;
output['userId'] = it.user.id;
return output;
}
}
}
私が初めて自分のアプリケーションを実行した後、それはJSONの代わりにXMLを返しますが、もし私はホット・デプロイを生成する新しい変更を行います(たとえば、コメントを追加する場合など)、JSONが生成されます。
私には何が欠けていますか?
実際に私の問題を解決したのは、@リソースアノテーションを削除することでした。アノテーションと 'render as'メソッドの間に何らかの矛盾があったようです – stack404