我想生成与此类似的JSON输出:
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代码传递给另一个视图变量
提前谢谢
答案 0 :(得分: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)我已阅读官方文档,但我无法找到如何进行瞬态字段 - 您可以使用对象或getter的有效值的命名参数
2)混合json和xml / html的最佳方法是什么。 - **我猜您可以查看:http://docs.groovy-lang.org/latest/html/gapi/groovy/json/StreamingJsonBuilder.html **
3)如何将json代码传递给另一个视图变量 - **在objectController **上检查上面的代码