Я только начал работать с Grails 2.4.4, и я пытаюсь создать REST api, который выводит JSON, но у меня есть проблема с этим, когда он делает объект JSON. Ниже перечислены класс домена, контроллер и objectmarshall.Grails rendering 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
}
Boostrap заводной:
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.
Что мне не хватает?
что на самом деле исправлено, моя проблема заключалась в удалении аннотации @Resource. Кажется, что существует какой-то конфликт между аннотацией и методом «render as» – stack404