2017-01-20 11 views
0

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が生成されます。

私には何が欠けていますか?

答えて

1

は、私はあなたが何をしたいのマップを作成し、それがはるかに簡単であるレンダリング見つけるrender(contentType:"application/json")

1

でコンテンツタイプを宣言してください。

def renderMe = [name: "Joe"] 
render renderMe as JSON 
+0

実際に私の問題を解決したのは、@リソースアノテーションを削除することでした。アノテーションと 'render as'メソッドの間に何らかの矛盾があったようです – stack404

関連する問題