JSON конвертер - переполнение стека - PullRequest
0 голосов
/ 23 июня 2010

Я пытаюсь преобразовать класс домена в JSON.

def converter = null
try{
  converter = events as JSON
} catch(e) {
  log.error "error during conversion to JSON"
  log.error e
}
return converter.toString()

Я всегда получаю эту ошибку:

    org.codehaus.groovy.grails.web.servlet.mvc.exceptions.ControllerExecutionException: Executing action [findEvents] of controller 
[com.geoadapta.geodata.DataAccessJsonController]  caused exception: 
java.lang.StackOverflowError
        at java.lang.Thread.run(Thread.java:619)
    Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.StackOverflowError
        ... 1 more
    Caused by: java.lang.StackOverflowError
        at org.codehaus.groovy.util.AbstractConcurrentMap.getOrPut(AbstractConcurrentMap.java:20)
        at grails.converters.JSON.value(JSON.java:188)
        at grails.converters.JSON.convertAnother(JSON.java:160)
        at grails.converters.JSON.value(JSON.java:192)
    // hundreds of times
        at grails.converters.JSON.value(JSON.java:192)
        at grails.converters.JSON.convertAnother(JSON.java:160)
        at grails.converters.JSON.value(JSON.java:192)
        at grails.converters.JSON.convertAnother(JSON.java:160)
        at grails.converters.JSON.value(JSON.java:192)
        at grails.converters.JSON.convertAnother(JSON.java:160)
        at grails.converters.JSON.value(JSON.java:192)
        at grails.converters.JSON.convertAnother(JSON.java:160)
        at grails.converters.JSON.value(JSON.java:192)
        at grails.converters.JSON.convertAnother(JSON.java:160)
        at grails.converters.JSON.value(JSON.java:192)
    2010-06-23 16:21:28,390 [http-8080-1] DEBUG [/GeoAdaptaApp].[grails]  -  Disabling the response for futher output

Это класс домена: http://www.copypastecode.com/31527 Единственная проблема, которую я вижу, это ссылка на контекст.Но даже если я установил значение «ноль», я все равно получу переполнение стека.

Мой конвертер не передает циклические ссылки.Я хотел бы отладить его и выяснить, какое свойство вызывает проблему, но пока не повезло.Есть намеки?

Приветствия

1 Ответ

1 голос
/ 23 июня 2010

Извините, предпочел бы добавить это как комментарий, но пока у вас нет представителя для добавления комментариев.

В вашем доменном классе это звучит так, как будто есть несколько классов, которые расширяют этот класс, как вы заполняете объект 'events'? Поскольку вы говорите, что для контекста задано значение NULL, и это единственное отношение, которое определено напрямую, список непреднамеренных подклассов в ваших результатах - это один из способов вспомнить, как вы могли бы войти в такой сценарий глубокой рекурсии.

Чтобы обойти насущную проблему, чтобы вы могли выполнить некоторую отладку, вы попытались позвонить:

converter.setRenderDomainClassRelations(false) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...