2017-05-23 19 views
1

我想產生類似這樣的JSON輸出:Grails的JSON GSON意見

var json = { 
     id: "1", 
     name: "AAA", 
     children: [{ 
      id: "2", 
      name: "BBB", 
      data: { 
       relation: "<b>Connections:</b><ul><li> AAA <div>(relation: direct)</div></li><li> CCC <div>(relation: direct)</div></li></ul>" 
      }, 
      children: [{ 
       id: "3", 
       name: "CCC", 
       data: { 
        relation: "<b>Connections:</b><ul><li> BBB <div>(relation: direct)</div></li></ul>" 
       }, 
       children: [] 
      }] 
     }, .... 

這裏是我做過什麼至今:

grails create-domain-resource json.Object 

class Object{ 
    String name 
    String relation 
    static hasMany = [children: Object] 

    public String getData() { 
     def writer = new StringWriter() 

_object.gson


//json g.render(hero) 
json { 
    //data hero.data 
    data: {relation hero.relation} 
    name hero.name 
} 

問題 我不能夠產生:

data: { 
        relation: "<b>Connections:</b><ul><li> BBB <div>(relation: direct)</div></li></ul>" 
       }, 

問題: 1)我讀過的官方文檔,但我無法找到如何做短暫領域 2)什麼是混合json和xml/html的最佳方法。 3)如何JSON代碼傳遞到另一個視圖可變

預先感謝您

回答

1

您可以檢查的官方文檔GSON觀點:

http://views.grails.org/latest/#_json_view_api

域類

class Object{ 
    String name 
    String relation 
    static hasMany = [children: Object] 

    public String getRelation() { 

模板1 object.gson

import json.Object 

model { 
    Object object 
} 

json tmpl.object(object) 

模板2 _object.gson

import json.Object 

model { 
    Object object 
} 

json { 
    id object.id 
    data(relation: object.relation) 
    name object.name 
    children g.render(object.children,[ excludes:['exclude_fields']]) 
    //children g.render(object.children,[resolveTemplate: false]) // one to many relations - avoid circular error 
    //object2 object.book.name // one to one relations 
} 

ObjectController

import grails.plugin.json.view.JsonViewTemplateEngine 
import org.springframework.beans.factory.annotation.Autowired 

    @Autowired 
    JsonViewTemplateEngine templateEngine 
    def test() { 
     def t = templateEngine.resolveTemplate('/object/object') 
     def writable = t.make(object: Object.get(params.id)) 
     def sw = new StringWriter() 
     writable.writeTo(sw) 
     return [json:sw] 
    } 

問題:

1)我已經重新廣告的官方文檔,但我無法找到如何做瞬態字段 - 你可以使用命名參數是對象或獲得者的有效值

2)什麼是混合json和xml/html 。 - **我想你可以檢查:http://docs.groovy-lang.org/latest/html/gapi/groovy/json/StreamingJsonBuilder.html **

3)如何JSON代碼傳遞到另一個視圖變量 - **高於objectController **

+0

校驗碼謝謝你們,這是工作 –