Как мне обработать лениво загруженные ссылки при возврате модели как JSON в Grails - PullRequest
1 голос
/ 06 декабря 2011

В Grails у меня есть класс модели User, который имеет однозначное сопоставление с другим классом модели Address. При возврате пользователя в формате JSON из моего контроллера я никогда не вижу класс адреса, только идентификатор. В моем классе пользователя у меня есть:

class User {

    Address address

    ...

    static mapping = {
        ...
        address fetch: 'join'               
        ...
    }

А потом в моем контроллере я делаю

User user = user.get(1)
render user as JSON

Есть ли способ изменить сопоставление, чтобы заставить 'as JSON' возвращать класс адреса?

Я работаю на Grails 1.3.7.

Ответы [ 2 ]

4 голосов
/ 07 декабря 2011

Существует два типа преобразователей JSON, т.е.:

grails.converters.deep.JSON
grails.converters.JSON

.
.
Вам нужен Deep Converter, Просто измените импортируемый класс на:

    // Dont Use: import grails.converters.JSON
    import grails.converters.deep.JSON

Примечание: Grails 1.3.7 import grails.converters.deep.JSON является чистым, в Grails 2.0 его устарело.

Разница между этими двумя заключается в том, что "глубокий" также JSON определит вложенные классы, тогда как стандартный конвертер не будет.

Надеюсь, что поможет

Привет

Кушал

1 голос
/ 07 декабря 2011

Вы пытались настроить конвертер на глубокий?

JSON.use ( "глубокий") { Пользователь user = user.get (1) сделать пользователя как JSON }

В маршалерах пользовательских объектов есть кое-что, что вы можете найти здесь, но моей первой попыткой было бы просто попробовать глубокое преобразование.

...