2017-05-23 12 views
1

Ich möchte JSON Ausgabe erzeugen ähnlich wie diese:Grails Gson JSON Ansichten

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: [] 
      }] 
     }, .... 

Hier ist, was ich bisher getan:

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


Problem Ich bin zu produzieren nicht in der Lage:

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

Fragen: 1) Ich habe die offizielle Dokumentation gelesen habe, aber ich bin nicht in der Lage zu finden, wie vergänglich Felder 2) zu tun Was ist der beste Ansatz zum Mischen von JSON und XML/HTML. 3) Wie json Code zu einer anderen Ansicht Variable

danken Ihnen im Voraus

Antwort

1

Sie überprüfen auf die offizielle Dokumentation für Gson Ansichten können passieren:

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

Domain Klasse

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

    public String getRelation() { 

Template 1 object.gson

import json.Object 

model { 
    Object object 
} 

json tmpl.object(object) 

Template 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] 
    } 

Fragen:

1) Ich habe re Anzeige die offizielle Dokumentation, aber ich nicht in der Lage bin zu finden, wie vergänglich Felder zu tun - können Sie benannte Argumente verwenden, die gültigen Werte für Objekte oder Getter

2) sind Was ist beste Ansatz des Mischens json und xml/html . - ** Ich denke, Sie überprüfen können: http://docs.groovy-lang.org/latest/html/gapi/groovy/json/StreamingJsonBuilder.html **

3) Wie json Code zu einer anderen Ansicht Variable übergeben - ** überprüfen Code oben auf objectController **

+0

danke es funktioniert –