2015-01-19 1 views
2

Я следующие Доменные Классы:вложенными Названный конфигурации для JSON Marshallers с Grails 2.4.4

class Domain1{ 
    String prop1 
    Domain2 prop2 
} 

class Domain2{ 
    String prop3 
} 

и 2 Названы ИАС Конфигурации для каждого

JSON.createNamedConfig('PUBLIC_API'){ 
     it.registerObjectMarshaller(Domain1){Domain1 domain1-> 
      return ['key1': domain1.prop1, 'key2': domain1.prop2] 
     } 
} 

JSON.createNamedConfig('PUBLIC_API'){ 
     it.registerObjectMarshaller(Domain2){Domain2 domain2-> 
      return ['key1': domain2.prop3] 
     } 
} 

Когда я пытаюсь использовать это с именем конфигурации, маршаллинг выполняется только на объекте родительского домена, маршаллер вложенного/дочернего класса даже не вызван.

Таким образом, используя этот конфиг

JSON.use('PUBLIC_API'){ 
    render domain1 as JSON 
} 

результаты в

{ 
    "key1": "value1", 
    "key2": { 
     "id": 1, 
     "class" : "Domain2", 
     "prop3" : "value2" 
    } 
} 

Я не мог найти что-либо в отношении такого использования названных маршалера конфиги в grails documentation

Кто-нибудь работал с такой усекас? Или если это даже поддерживается?

+0

Вложенные маршаллеры отлично работают без именных конфигураций, но это не то, что я использую. Я должен зарегистрировать как минимум 2 разных формата для домена, и я думал, что имя config будет облегчением. – v1p

+0

Я закончил тем, что добавил 3 различных конфигурации ... неименованный конфиг и 2 named config для дочернего домена. Это не касается проблемы, а просто обходное решение. – v1p

ответ

0

Я решил такую ​​же проблему: Для моего клиента я посылаю подобное jsons из Дифференц доменов:

JSON.registerObjectMarshaller(Domain1) { Domain1 domain1-> 
      return [ 
        id  : domain1.id, 
        label : domain1.prop 
      ] 
     } 
     JSON.registerObjectMarshaller(Domain2) { Domain2 domain2-> 
      return [ 
        id   : domain2.id, 
        label  : domain2.anotherProp 
      ] 
     } 

     render((domains1+ domains2) as JSON); 

Может быть, это будет полезно для вас.

+0

Не могли бы вы рассказать? Что такое (библиотеки + geneSets)? – v1p

+0

Я считаю, что вы неправильно читали вопрос. Проблема связана с вложенными ассоциациями, а не с отображением w.r.t именованной конфигурации. – v1p