Grails渲染JSON

时间:2017-01-20 12:29:13

标签: json grails groovy

我刚刚开始使用Grails 2.4.4而我正在尝试创建一个输出JSON的REST api,但在将对象渲染为JSON时我遇到了问题。下面列出的是域类,控制器和objectmarshall。

域类:

@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
}

Boostrap groovy:

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;
    }   
    }
    }

第一次运行我的应用程序后,它返回XML而不是JSON,但如果我进行了一个新的更改,将生成热部署(例如,如果我添加注释),它将生成JSON。

我错过了什么?

2 个答案:

答案 0 :(得分:1)

尝试使用faceCount[0].FaceValue

声明内容类型

答案 1 :(得分:1)

我发现创建一个你想要的地图和渲染更简单。

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