我正在做grails,我有一个用例,其中有两个领域类A和B是独立的类,我希望A类和B类的值在一个JSON视图中。
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","Ulist.json",false);
xmlhttp.send();
var list = xmlhttp.responseText;
obj = JSON.parse(list);
$scope.data = {};
$scope.model = {};
$scope.items = obj;
在Bootstrap.groovy文件中,我编写了以下格式以在JSON视图中显示值。
class A
String name,
String age
class B
String report
答案 0 :(得分:1)
Groovy附带了在Groovy之间转换的集成支持 对象和JSON。专门用于JSON序列化和 解析可在groovy.json包中找到。
例如,您可以使用groovy.json.JsonBuilder
在您的示例中,您可以尝试
具有A类和B类
class A {
String name
String age
}
class B {
String report
}
在Bootstrap.groovy文件中导入JsonBuilder
import groovy.json.JsonBuilder
然后您可以尝试
A a = new A(name: 'ana', age: '15')
B b = new B(report: 'lorem ipsum...')
JsonBuilder jsonBuilder = new JsonBuilder()
jsonBuilder.result {
name a.name
age a.age
report b.report
}
println jsonBuilder.toString()
输出
{"result":{"name":"ana","age":"15","report":"lorem ipsum..."}}
答案 1 :(得分:0)
如果您想要更可重用的代码,则可以创建一个具有要在json结果中显示的公共属性的新类。
class MyJSONResult(){
String name
String age
String report
// add more properties as needed
// constructor
MyJSONResult(A a, B b){
name = a.name
age = a.name
report = b.report
}
}
//when you need json result,
import grails.converters.JSON
def json = new MyJSONResult(a, b)
render json as JSON
关于创建一个新类和一个对象的好处是您可以重用它。例如,如果需要在gsp页面中显示相同的结果,则可以将对象传递到视图并访问其属性。
def json = new MyJSONResult(a, b)
render view:'myview', model:[myVar: json]
// in gsp views
${myVar.name}
这样,您用于构建json有效负载的任何业务逻辑都可以用于您的api或您可能需要使用它们的其他任何地方