我刚刚开始使用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。
我错过了什么?
答案 0 :(得分:1)
尝试使用faceCount[0].FaceValue
答案 1 :(得分:1)
我发现创建一个你想要的地图和渲染更简单。
def renderMe = [name: "Joe"]
render renderMe as JSON